HDU-6092 Rikka with Subset(dp)

来源:互联网 发布:linux bash是什么 编辑:程序博客网 时间:2024/05/17 22:06

传送门:HDU-6092

这道题就是个01背包的逆过程,B[i]+=B[i-Aj]

#include<bits/stdc++.h>using namespace std;typedef long long LL;const int MX  = 1e4 + 5;const int inf = 0x3f3f3f3f;int dp[MX];int main() {    int T,n,m;    //freopen("in.txt","r",stdin);    cin>>T;    while(T--){        scanf("%d%d",&n,&m);        for(int i=0;i<=m;i++) scanf("%d",&dp[i]);        vector<int>ans;        for(int i=1;i<=m;){            if(dp[i]==0) i++;            else{                for(int j=i;j<=m;j++) dp[j]-=dp[j-i];                ans.push_back(i);            }        }        for(int i=0;i<ans.size();i++) printf("%d%c",ans[i],i==ans.size()-1?'\n':' ');    }    return 0;}


原创粉丝点击