请问这题每次排序后做剩余时间最高的两题为什么是错的
查看原帖
请问这题每次排序后做剩余时间最高的两题为什么是错的
738749
Sasya楼主2023/3/12 12:44

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;
	
}
2023/3/12 12:44
加载中...