bzoj2748音量调节——背包
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2748
怎么会有这样的省选题...
代码如下:
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int n,st,mx,c[55]; bool f[55][1005]; int main() { scanf("%d%d%d",&n,&st,&mx); for(int i=1;i<=n;i++)scanf("%d",&c[i]); f[0][st]=1; for(int i=1;i<=n;i++) for(int j=0;j<=mx;j++) { if(j+c[i]<=mx)f[i][j]|=f[i-1][j+c[i]]; if(j-c[i]>=0)f[i][j]|=f[i-1][j-c[i]]; } int ans=-1; for(int j=mx;j>=0;j--) if(f[n][j]) { ans=j;break; } printf("%d",ans); return 0; }