rt...
我的理解里这道题就是要把时间尽量平均消耗,以保证每一次消耗时间都尽量能同时做两个作业,所以每一次消耗时间后我会进行排序,然后消耗剩余时间最高的两个。这个思路不知道为什么是错的,希望有大佬解说一下,蟹蟹!
上个这个思路但是wa了的代码。
#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=a;i<=b;i++)
using ll= long long int;
vector<int> wrk;
int sum;
bool cmp(int a,int b){
return a>b;
}
void prc(){
sort(wrk.begin(),wrk.end(),cmp);
if(wrk[1]==0){
sum+= wrk[0];
}
if(wrk[0]&&wrk[1]){
sum++;
wrk[0]--;
wrk[1]--;
prc();
}
}
int main(){
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int s1,s2,s3,s4;cin>>s1>>s2>>s3>>s4;
wrk=vector<int>(s1);
sum=0;
rep(i,0,s1-1)cin>>wrk[i];
prc();
wrk=vector<int>(s2);
rep(i,0,s2-1)cin>>wrk[i];
prc();
wrk=vector<int>(s3);
rep(i,0,s3-1)cin>>wrk[i];
prc();
wrk=vector<int>(s4);
rep(i,0,s4-1)cin>>wrk[i];
prc();
cout<<sum<<endl;
}