您的位置:首页 > 其它

[DP][HAOI2012]音量调节

2018-01-29 12:08 423 查看
BZOJ原题    洛谷原题

【解法】用F[i][j]表示i之前能达到j音量

F[i][j] = F[i-1][j+A[i]] || F[i-1][j-A[i]];(自行处理if)

另外一维可以压缩一下。应该可以压缩成F[2][10010]。

【code】

#include <iostream>
using namespace std;

int A[101];
bool F[101][10010];
int N, S, Max, ans;

int main() {
ans = -1;
cin >> N >> S >> Max;
for(int i=1; i<=N; i++) cin >> A[i];
F[0][S] = 1;
for(int i=1; i<=N; i++) {
for(int j=0; j<=Max; j++) {
if((j + A[i] <= Max && F[i-1][j + A[i]]) || (j >= A[i] && F[i-1][j-A[i]]))
F[i][j] = 1;
if(i == N && F[i][j]) ans = j;
}
}
cout << ans << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: