您的位置:首页 > 其它

【bzoj2748】[HAOI2012]音量调节

2016-03-25 21:03 260 查看
设F[i][j]表示在第i首歌曲结束后,音量能否刚好为j

转移:F[i][j]=F[i][j-C[i]] or F[i][j+C[i]]

初始化:F[0][beginlevel]=true

最后在所有F
[j]中找到F
[j]为true的且要让j尽量大。

如果所有0<=j<=maxlevel中的F
[j]均为false,则输出-1。

#include<algorithm>

#include<iostream>

#include<cstdlib>

#include<cstring>

#include<cstdio>

#include<cmath>

#include<queue>

using
namespace
std;


#define N 1010


int
f

;


int
n,b,m;


int
x;


int
main()

{

scanf
(
"%d%d%d"
,&n,&b,&m);

f[0][b]=1;

for
(
int
i=1;i<=n;i++)

{

scanf
(
"%d"
,&x);

for
(
int
j=0;j<=m;j++)

{

if
(j>=x)

f[i][j]=f[i-1][j-x];

if
(j+x<=m)

f[i][j]=(f[i][j] || f[i-1][j+x]);

}

}

for
(
int
i=m;i>=0;i--)

if
(f
[i])

{

printf
(
"%d"
,i);

return
0;

}

printf
(
"-1"
);

return
0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: