zoukankan      html  css  js  c++  java
  • [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]);
    }
  • 相关阅读:
    printcap
    browser-ua
    PHP 开发 APP 接口 学习笔记与总结
    Java实现 LeetCode 72 编辑距离
    Java实现 LeetCode 72 编辑距离
    Java实现 LeetCode 72 编辑距离
    Java实现 LeetCode 71 简化路径
    Java实现 LeetCode 71 简化路径
    Java实现 LeetCode 71 简化路径
    Java实现 LeetCode70 爬楼梯
  • 原文地址:https://www.cnblogs.com/lover-fucker/p/13566707.html
Copyright © 2011-2022 走看看