喜提80ptsWa #5#6求助(悬关)
查看原帖
喜提80ptsWa #5#6求助(悬关)
1003851
dsfgsdf楼主2024/8/27 16:37

我的代码:

//贪心 对于n个头,每个头(s)找最小的z且可以使他(s)被砍掉 
//贪心证明:假如每个s找了比z大的k,来砍他,两种都可以被砍掉,但找z的花费反而比k小,矛盾  
//假如s找了和z一样的m,两种都可以被砍掉,花费一样,符合贪心的选择标准
//故而 贪心成立 
#include<bits/stdc++.h>
using namespace std;
int n,m,big[20004],maxt=-1,maxr=-1,z[20004],ans; 
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++) {
		cin>>big[i];
		maxt=max(maxt,big[i]);
	}
	for(int i=1;i<=m;i++) {
		cin>>z[i];
		maxr=max(maxr,z[i]);
	}
	if(n>m||maxt>maxr){
		cout<<"you died!";
		return 0;
	}
	sort(z+1,z+1+m);
	for(int i=1;i<=n;i++){
		int zhi=1,p=0;
		while(zhi<m){
			if(z[zhi]>=big[i]){
				ans+=z[zhi];
				p=1;
				break;
			}
			zhi++;
		}
		if(p==0){
			cout<<"you died!";
			return 0;
		}
	}
	cout<<ans;
	return 0;
}

2024/8/27 16:37
加载中...