比赛 SBOI2022暑假快乐赛① 评测结果 WEEEEEEEE
题目名称 送礼物 最终得分 0
用户昵称 ➥Q小白小黑233 运行时间 1.503 s
代码语言 C++ 内存使用 6.13 MiB
提交时间 2022-06-25 11:08:48
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<algorithm>

using namespace std;
int cmp(int a,int b){
	return a>b;
}
int main(){
	
	freopen("giftgiving.in","r",stdin);
	freopen("giftgiving.out","w",stdout);
	
	long long w,n;
	long long i,j;
	long long y[50]={},g[50]={};
	long long s[50][3000]={}; 
	bool b[50][3000]={};
	cin>>w>>n;
	
	for(i=1;i<=n;i++){
		cin>>y[i];
	}
	sort(y+1,y+n,cmp);
	for(i=n;i>0;i--){
		g[n-i+1]=y[i];
//		s[i][g[i]]=g[i];//
	}
//	for(i=1;i<=n;i++){
//		cout<<g[i]<<' ';
//	}
	for(i=1;i<=w;i++){//阶段 
		for(j=1;j<=n;j++){
			if(g[j]+s[j][i-1]<=i&&!b[j][i-1]){
				
				if(g[j]+s[j][i-1]>max(s[j][i-1],s[j-1][i])){
					b[j][i]=1;
					s[j][i]=g[j]+s[j][i-1];
				}else{
					s[j][i]=max(s[j][i-1],s[j-1][i]);
				}
			}
		}
	}
	
	cout<<s[n][w]+1;
	return 0;
}