请问为啥只贪心会WA呢qwq
查看原帖
请问为啥只贪心会WA呢qwq
672837
DaShabby楼主2022/7/22 16:29
#include<iostream>
#include<queue>
#include<cstdio>
#include<map>
#include<cstring>
#include<vector>
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
const int maxn=2e5+45,MAXN=2e3+5,inf=0x3f3f3f3f;
const ll MOD=1e9+7;
priority_queue<ull,vector<ull>,less<ull> >red,green,blue;
int main()
{
	ull r,g,b,x;
	cin>>r>>g>>b;
	ull S=0;
	for(int i=1;i<=r;i++){
		cin>>x;
		red.push(x);
	}
	for(int i=1;i<=g;i++){
		cin>>x;
		green.push(x);
	}
	for(int i=1;i<=b;i++){
		cin>>x;
		blue.push(x);
	}
    while(red.size()&&blue.size()&&green.size()){
		if(red.top()<=blue.top()&&red.top()<=green.top()){
			S+=blue.top()*green.top();
			blue.pop();green.pop();
		}
		else if(blue.top()<=green.top()){
			S+=red.top()*green.top();
			red.pop();green.pop();
		}
		else{
			S+=red.top()*blue.top();
			red.pop();blue.pop();
		}
	}
    while(red.size()&&blue.size()){
    	S+=red.top()*blue.top();
    	red.pop();blue.pop();
	}
	while(red.size()&&green.size()){
		S+=red.top()*green.top();
		red.pop();green.pop();
	}
	while(blue.size()&&green.size()){
		S+=blue.top()*green.top();
		blue.pop();green.pop();
	}
	cout<<S<<endl;
	return 0;
}
2022/7/22 16:29
加载中...