传送门: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;
}