题解 | #称砝码#

称砝码

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;
}

全部评论

相关推荐

真烦好烦真烦:牛友太有实力了
点赞 评论 收藏
分享
群星之怒:不是哥们,你就不好奇瘫痪三十年的老植物人是啥样的吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务