背包DP, OLE,样例过,回必关
查看原帖
背包DP, OLE,样例过,回必关
1709391
gxlzm楼主2025/7/24 08:20

我可能没理解本题输入格式对程序的影响。

#include<bits/stdc++.h>
using namespace std;
//#define int long long     2000000
int k, n, a[55], ans=0, sum=2000008;
struct node{
	bool f=0;
	int kk=0x3f3f3f3f;
}dp[2000008]; 
signed main(){
	ios::sync_with_stdio(false); cin.tie(0);cout.tie(0);
	cin>>k>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		dp[a[i]].kk=1;
	} 
	sort(a+1, a+1+n);
	dp[0].f=1;
	dp[0].kk=0;
	for(int i=1;i<=n;i++){
		for(int j=a[i];j<=sum;j++){
			if(dp[j-a[i]].f&&dp[j-a[i]].kk+1<=k){
				dp[j].f=1;
				dp[j].kk=min(dp[j].kk, dp[j-a[i]].kk+1);
			}
		}
	}
	for(int i=1;i<=sum;i++){
		if(!dp[i].f) break;
		ans=i;
	}
	cout<<ans<<'\n';
	return 0;
}
2025/7/24 08:20
加载中...