首页 > 学院 > 开发设计 > 正文

2748: [HAOI2012]音量调节

2019-11-06 07:24:01
字体:
来源:转载
供稿:网友

题目链接

题目大意:有初始数字x,max和n个数字z[i],每次必须在x上加或减z[i],数字不能超过max或小于0,求最大能达到的数字

题解:bool型dp

#include <iostream>#include <cstdio>#include <algorithm>using namespace std;const int M=55;int n,be,mx,c[M];bool f[M][1005];void work(){ for(int i=1;i<=n;i++) { for(int j=mx;j>=0;j--){ if(j+c[i]<=mx) f[i][j+c[i]]|=f[i-1][j]; if(j-c[i]>=0) f[i][j-c[i]]|=f[i-1][j]; } } for(int i=mx;i>=0;i--) if(f[n][i]){PRintf("%d/n",i);return ;} puts("-1");}void init(){ cin>>n>>be>>mx; for(int i=1;i<=n;i++) scanf("%d",&c[i]); f[0][be]=1;}int main(){ init(); work(); return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表