73pts,在线等
查看原帖
73pts,在线等
659460
SunsetVoice楼主2023/7/7 14:22
#include<bits/stdc++.h>
using namespace std;
struct ti{
	int w,c;
}a[10001];
bool cmp(ti x,ti y){
	return x.c>y.c;
}
int main(){
	int n,m,k,dp[1001][11] = {0},num = 0,ans = -1,kk;
	cin>>n>>m>>kk;
	for(int i = 1;i<=n;i++){
		cin>>a[i].c>>a[i].w;
	}
	for(int i = 1;i<=n;i++){
		for(int j = m;j>=a[i].w;j--){
			for(int k = min(i,kk);k>=1;k--){
				dp[j][k] = max(dp[j][k],dp[j-a[i].w][k]+a[i].c);
				dp[j][k] = max(dp[j][k],dp[j-a[i].w][k-1]+a[i].c*2);
				ans = max(ans,dp[j][k]);
			}
			dp[j][0] = max(dp[j][0],dp[j-a[i].w][0]+a[i].c);
			ans = max(ans,dp[i][0]);
		}
	}
	cout<<ans<<endl;
	return 0;
}
2023/7/7 14:22
加载中...