洛谷 P2347 砝码称重 题解
每日一题 day12 打卡
Analysis
完全背包
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #define maxn 1000+10 6 using namespace std; 7 inline int read() 8 { 9 int x=0; 10 bool f=1; 11 char c=getchar(); 12 for(; !isdigit(c); c=getchar()) if(c=='-') f=0; 13 for(; isdigit(c); c=getchar()) x=(x<<3)+(x<<1)+c-'0'; 14 if(f) return x; 15 return 0-x; 16 } 17 inline void write(long long x) 18 { 19 if(x<0){putchar('-');x=-x;} 20 if(x>9)write(x/10); 21 putchar(x%10+'0'); 22 } 23 int weight[10]={0,1,2,3,5,10,20},a[10],dp[maxn]; 24 int ans; 25 int main() 26 { 27 for(int i=1;i<=6;i++) a[i]=read(); 28 dp[0]=1; 29 for(int i=1;i<=6;i++) 30 for(int j=1;j<=a[i];j++) 31 for(int k=1000;k>=0;k--) 32 { 33 if(dp[k]==1) dp[k+weight[i]]=1; 34 } 35 for(int i=1;i<=1000;i++) if(dp[i]==1) ans++; 36 printf("Total="); 37 write(ans); 38 return 0; 39 }
请各位大佬斧正(反正我不认识斧正是什么意思)