BZOJ2748: [HAOI2012]音量调节
【传送门:BZOJ2748】
简要题意:
给出初始音量和能承受的最大音量,共有n首歌,每首歌可以增加或减少c[i]的音量,求出n首歌后的最大音量
题解:
DP水题
设f[i][j]为第i首歌时能否达到j的音量,然后。。这么水就不用解释了吧
参考代码:
#include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<cmath> using namespace std; bool f[51][1100]; int c[51]; int main() { int n,bl,ml; scanf("%d%d%d",&n,&bl,&ml); memset(f,false,sizeof(f)); f[0][bl]=true; for(int i=1;i<=n;i++) scanf("%d",&c[i]); for(int i=1;i<=n;i++) { for(int j=0;j<=ml;j++) { if(j+c[i]<=ml&&f[i-1][j]==true) f[i][j+c[i]]=true; if(j-c[i]>=0&&f[i-1][j]==true) f[i][j-c[i]]=true; } } for(int i=ml;i>=0;i--) { if(f[n][i]==true) { printf("%d\n",i); return 0; } } printf("-1\n"); return 0; }
渺渺时空,茫茫人海,与君相遇,幸甚幸甚
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步