社区讨论

求调E

学术版参与者 4已保存回复 6

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
6 条
当前快照
1 份
快照标识符
@lo18rtiz
此快照首次捕获于
2023/10/22 17:03
2 年前
此快照最后确认于
2023/11/02 16:53
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
#define qm(a,b) a=min(a,b)
#define ull unsigned long long
#define int long long
#define fo(i,l,r) for(int i=l;i<=r;i++)
#define fd(i,l,r) for(int i=r+5;i>=l;i--)
using namespace std;
int n,k,p,c[105],a[105][10],dp[11][11][11][11][11],ans=LLONG_MAX;
signed main(){
	cin>>n>>k>>p;
	fd(j,0,5)fd(pk,0,5)fd(kk,0,5)fd(kkk,0,5)fd(l,0,5)dp[j][pk][kk][kkk][l]=LLONG_MAX-1000000000000ll;
	if(k==1)dp[0][p][p][p][p]=0;
	if(k==2)dp[0][0][p][p][p]=0;
	if(k==3)dp[0][0][0][p][p]=0;
	if(k==4)dp[0][0][0][0][p]=0;
	if(k==5)dp[0][0][0][0][0]=0;
	fo(i,1,n){
		cin>>c[i];
		fo(j,1,k)cin>>a[i][j];
		if(k==1){
			fd(i1,a[i][1],p)qm(dp[i1][p][p][p][p],dp[i1-a[i][1]][p][p][p][p]+c[i]);
		}
		if(k==2){
			fd(i1,a[i][1],p)fd(i2,a[i][2],p)
				qm(dp[i1][i2][p][p][p],dp[i1-a[i][1]][i2-a[i][2]][p][p][p]+c[i]);
		}
		if(k==3){
			fd(i1,a[i][1],p)fd(i2,a[i][2],p)fd(i3,a[i][3],p)
				qm(dp[i1][i2][i3][p][p],
					dp[i1-a[i][1]][i2-a[i][2]][i3-a[i][3]][p][p]+c[i]);
		}
		if(k==4){
			fd(i1,a[i][1],p)fd(i2,a[i][2],p)fd(i3,a[i][3],p)fd(i4,a[i][4],p)
				qm(dp[i1][i2][i3][i4][p],
					dp[i1-a[i][1]][i2-a[i][2]][i3-a[i][3]][i4-a[i][4]][p]+c[i]);
		}
		if(k==5){
			fd(i1,a[i][1],p)fd(i2,a[i][2],p)fd(i3,a[i][3],p)fd(i4,a[i][4],p)fd(i5,a[i][5],p)
				qm(dp[i1][i2][i3][i4][i5],
					dp[i1-a[i][1]][i2-a[i][2]][i3-a[i][3]][i4-a[i][4]][i5-a[i][5]]+c[i]);
		}
	}
	fd(i1,p,p)fd(i2,p,p)fd(i3,p,p)fd(i4,p,p)fd(i5,p,p)ans=min(ans,dp[i1][i2][i3][i4][i5]);
	cout<<(ans!=LLONG_MAX-1000000000000ll?ans:-1);
	return 0;
}

回复

6 条回复,欢迎继续交流。

正在加载回复...