2748: [HAOI2012]音量调节
题目:传送门
题解:
sb省选题..呵呵一眼背包:
f[i][j]表示第i时刻能否为音量j
代码:
1 #include<cstdio> 2 #include<cstring> 3 #include<cstdlib> 4 #include<cmath> 5 #include<algorithm> 6 using namespace std; 7 int n,st,mx; 8 int a[55]; 9 bool f[50][1100]; 10 int main() 11 { 12 scanf("%d%d%d",&n,&st,&mx); 13 for(int i=1;i<=n;i++)scanf("%d",&a[i]); 14 f[0][st]=1; 15 for(int i=1;i<=n;i++) 16 for(int j=0;j<=mx;j++) 17 { 18 if(a[i]+j<=mx && f[i-1][a[i]+j])f[i][j]=1; 19 if(j-a[i]>=0 && f[i-1][j-a[i]])f[i][j]=1; 20 } 21 bool bk=false; 22 for(int i=mx;i>=0;i--) 23 if(f[n][i]){printf("%d\n",i);bk=true;break;} 24 if(bk==false)printf("-1\n"); 25 return 0; 26 }