bzoj 2748: [HAOI2012]音量调节 dp

版权声明:本文为博主原创文章,转载请联系博主。 https://blog.csdn.net/everlasting_20141622/article/details/77368894

题目链接


很水的一道题

如果第i首歌时音量为j是可行的,那么dp[i][j]=true

最初dp[0][beginLevel]=true;

之后每次暴力扫上一次的状态,转移就好


代码:

#include<iostream>
#include<cstdio>
#include<vector>
#include<queue>
#include<cstring>
#include<set>
 
#define ll long long
#define inf 10000001
 
using namespace std;

bool dp[55][1010];
int n,m,Max;

int main(){
	scanf("%d%d%d",&n,&m,&Max);
	dp[0][m]=true;
	for(int i=1; i<=n; i++){
		int x;
		scanf("%d",&x);
		for(int j=0; j<=Max; j++){
			if(dp[i-1][j] && j-x>=0)dp[i][j-x]=true;
			if(dp[i-1][j] && j+x<=Max)dp[i][j+x]=true;
		}
	}
	for(int i=Max; i>=0; i--){
		if(dp[n][i]){
			printf("%d\n",i);
			return 0;
		}
	}
	printf("-1\n");
	
    return 0;
}


展开阅读全文

没有更多推荐了,返回首页