蒟蒻吃药计划-治疗系列 #round5 采药+数字组合代码存放
1 #include <bits/stdc++.h> 2 #define fp(i,l,r) for(register int i=(l);i<=(r);++i) 3 #define fd(i,l,r) for(register int i=(l);i>=(r);--i) 4 using namespace std; 5 inline int botposs(int a,int b,int pd){ 6 if(pd==1) return a>b?a:b; 7 if(pd==0) return a>b?b:a; 8 } 9 int main(){ 10 int dp[10000+20],w[10000+20],c[10000+20]; 11 int n,v; 12 scanf("%d%d",&v,&n); 13 fp(i,1,n){ 14 scanf("%d%d",&c[i],&w[i]); 15 } 16 fp(i,1,v){ 17 dp[i]=0; 18 } 19 fp(i,1,n){ 20 fd(j,v,c[i]){ 21 dp[j]=botposs(dp[j],dp[j-c[i]]+w[i],1); 22 } 23 } 24 printf("%d",dp[v]); 25 return 0; 26 }
1 #include<bits/stdc++.h> 2 #define fp(i,l,r) for(register int i=(l);i<=(r);++i) 3 #define fd(i,l,r) for(register int i=(l);i>=(r);--i) 4 using namespace std; 5 int a,dp[1001]; 6 int n,m; 7 int main(){ 8 scanf("%d%d",&n,&m); 9 dp[0]=1; 10 fp(i,1,n){ 11 scanf("%d",&a); 12 fd(j,m,a){ 13 dp[j]+=dp[j-a]; 14 } 15 } 16 printf("%d",dp[m]); 17 return 0; 18 }