如果老师布置的作业,分值所不能恰好凑成k那该怎么处理?求助
查看原帖
如果老师布置的作业,分值所不能恰好凑成k那该怎么处理?求助
181715
gjh303987897楼主2021/10/28 18:38
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,m,k,r,ans;
int t[15],w[15],c[15],dp[55];
int main(){
	cin>>n>>m>>k>>r;
	memset(dp,0x3f,sizeof(dp)); dp[0]=0;
	for(int i=1;i<=n;i++) cin>>t[i];
	for(int i=1;i<=m;i++) cin>>w[i];//时间 
	for(int i=1;i<=m;i++) cin>>c[i];//分值
	for(int i=1;i<=m;i++){
		for(int j=k;j>=c[i];j--){
			dp[j]=min(dp[j],dp[j-c[i]]+w[i]);
		}
	} 
//	cout<<dp[k]<<endl;
	if(r<=dp[k]){
		cout<<0;return 0;
	}else{
		sort(t+1,t+1+n); r-=dp[k];
	}
	for(int i=1;i<=n;i++){
		if(r>=t[i]){
			r-=t[i]; ans++;
		}
	}
	cout<<ans;
	return 0;
	
} 
2021/10/28 18:38
加载中...