题解 | #称砝码#

称砝码

https://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c

#include <iostream>
#include <unordered_set>
#include <vector>
using namespace std;

int main() {
    int n;
    cin >> n;
    vector<int> weight(n);
    vector<int> num(n);
    vector<int> vec;
    int sum = 0;
    for(int i = 0; i < n; i++) cin >> weight[i];
    for(int i = 0 ; i < n; i ++){
        cin >> num[i];
        for(int j = 0; j < num[i]; j++) vec.push_back(weight[i]);
        sum += weight[i] * num[i];
    }
    vector<bool> dp(sum+1, false);
    dp[0] = true;
    for(int it : vec){
        for(int i = sum; i >= it; i--){
            if(dp[i - it]) dp[i] = true;
        }
    }
    int count = 0;
    for(bool it : dp){
        if(it) count++;
    }
    cout << count << endl;
    return 0;
}

全部评论

相关推荐

05-14 20:34
门头沟学院 Java
窝补药贝八股:管他们,乱说,反正又不去,直接说680
点赞 评论 收藏
分享
秋盈丶:后续:我在宿舍群里和大学同学分享了这事儿,我好兄弟气不过把他挂到某脉上了,10w+阅读量几百条评论,直接干成精品贴子,爽
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务