• [DP]解方程


    题目描述

    Mirko很喜欢解方程。这次他拿到1个多元一次方程A1B1+A2B2+……+AnBn=C。现在给出C的值,并且给出所有的A的值,即A1,A2,……,An的值,求出B1,B2,……Bn有多少组非负整数解。

    输入

    输入:第一行是两个整数n和c;

    第二行有n个整数:分别表示A1到An

    输出

    输出:

    输出总解数(用999983取模).

    样例输入

    2 4
    1 2
    

    样例输出

    3

    解题思路

    解方程实际并不难,看出是什么题就可以解决。既然告诉我们A的值,我们姑且假设B1后面的全是0,那么就要用A1来装满C。然而后面的B并不一定全为0,那么就是用所有的A想方设法来填满B了,于是我们便可以看出来这道题的方法。就是一道完全背包求总数的问题。实现于是就十分轻松了。

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <cmath>
    #include <vector>
    #include <cstdlib>
    #include <queue>
    #include <algorithm>
    #include <map>
    using namespace std;
    int n,c,a[10005],dp[100005];
    int main(){
        scanf ("%d%d",&n,&c);
        for (int i = 1; i <= n; i ++ ){
            scanf ("%d",&a[i]);
        }
        dp[0]=1;
        for (int i = 1;i <= n; i ++ ){
            for (int j = a[i] ; j <= c ;j ++ ){
                dp[j] += dp[j - a[i]];
                dp[j] %= 999983;
            }
        }
        printf("%d",dp[c]);
    }
  • 相关阅读:
    hello fetch
    git 基础命令
    拜占庭将军
    如何学习区块链
    简单的理解区块链技术
    使用AOP统一验签和校参
    为每个请求分配traceId的两种方式及父子线程本地变量传递
    监听kafka消息
    JVM OOM分析与调优
    JVM内存结构
  • 原文地址:https://www.cnblogs.com/lover-fucker/p/13566707.html
Copyright © 2020-2023  润新知