站外题,马蜂优良,悬赏关注
  • 板块题目总版
  • 楼主Charlie_Nine
  • 当前回复1
  • 已保存回复1
  • 发布时间2025/7/29 18:59
  • 上次更新2025/7/30 08:41:19
查看原帖
站外题,马蜂优良,悬赏关注
1349424
Charlie_Nine楼主2025/7/29 18:59

http://www.code-fans.cn/p/sn1102/submit

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=30,M=1e4+10;
int n,m,d;
int w[N][N],c[N][N],dp[N][M],gys[N][M];
string l[N][N]={{""}};
int main(){
	//freopen("machine.in","r",stdin);
	//freopen("machine.out","w",stdout);
	cin>>n>>m>>d;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>c[i][j];
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>w[i][j];
		}
	}
	memset(dp,0x3f3f3f,sizeof(dp));
	dp[0][0]=0;
	for(int i=1;i<=n;i++){
		for(int j=d;j>=0;j--){
			for(int k=1;k<=m;k++){
				if(j>=c[i][k]&&dp[i-1][j-c[i][k]]+w[i][k]<dp[i][j]){
					dp[i][j]=dp[i-1][j-c[i][k]]+w[i][k];
					l[i][j]=l[i-1][j-c[i][k]]+to_string(k)+' ';
				}
			}
		}
	}
	int mn=0x3f3f3f,best_d=0;
	for(int i=0;i<=d;i++){
		if(dp[n][i]<mn){
			mn=dp[n][i];
			best_d=i;
		}
	}
	cout<<mn<<"\n"<<l[n][best_d];
	return 0;
}

2025/7/29 18:59
加载中...