关于本题
查看原帖
关于本题
1050501
ATION001楼主2024/8/11 10:10

我拿一个本来思路错误的贪心写的,结果爆 0,然后 −1-1 就过了……

代码

#include<bits/stdc++.h>
using namespace std;
struct node{
	int times,vis;
}b[15];
int n,m,k,r,a[15];
bool cmp(node x,node y){
	if(x.times!=y.times){
		return x.times<y.times;
	}
	return x.vis>y.vis;
}
int main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	cin>>n>>m>>k>>r;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	sort(a+1,a+n+1);
	for(int i=1;i<=m;i++){
		cin>>b[i].times;
	}
	for(int i=1;i<=m;i++){
		cin>>b[i].vis;
	}
	sort(b+1,b+n+1,cmp);
	int tot=0,ti=0;
	for(int i=1;tot<k;i++){
		tot+=b[i].vis,ti+=b[i].times;
	}
	int ans=0,u=r-ti;
	for(int i=1;i<=n;i++){
		if(u>=a[i]){
			ans++;
		}else{
			break;
		}
	}
	cout<<ans-1;
	return 0;
}

求大佬解答。

2024/8/11 10:10
加载中...