题目链接
题目翻译:
这是一个著名的奥林匹克竞赛,参赛者的数量超过100人。该竞赛由两个阶段组成:淘汰赛和决赛。至少有100个人会晋级决赛。相应的,淘汰赛由两场比赛组成。
淘汰赛的结果是两场比赛的分数之和。但是不幸的是,裁判搞丢了淘汰赛的最终排名,只有第一场比赛和第二场比赛的排名。
每场比赛,参赛者将以分数按非递增的顺序排名。
在第一场比赛中,第100名的分数是a分,并且第1名到第100名(包括第1名和第100名)这100个人在第二场比赛都至少得到了b分。
同样地,在第二场比赛中,第100名的分数是c分,并且第1名到第100名(包括第1名和第100名)这100个人在第一场比赛都至少得到了d分。
经过两场比赛,所有参赛者将以两个比赛的分数和按非递增的顺序排名。晋级决赛的分数线就是第100名的分数。
给你四个整数a,b,c,d,请帮裁判找出分数线的最小可能值。
解题思路:
在第一场比赛中,前100名的总分至少是a+b分,第二场比赛的前100名的总分至少是c+d分。可知总分前100名至少是max(a+b,c+d)分。即为答案。
代码:
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#include<map>
#include<queue>
#include<cstdio>
#include<cmath>
#define inf 0x3f3f3f3f
using namespace std;
int main(){
// freopen("1.txt","r",stdin);
int t,a,b,c,d;
cin>>t;
while(t--){
cin>>a>>b>>c>>d;
cout<<max(a+b,c+d)<<endl;
}
return 0;
}
总结:
一开始想出思路后,觉得不至于这么简单吧?于是看了看题目的正确率,居然有几百人错了,难道有坑?于是又费了几十分钟去想,实在想不明白,就交了,尼玛对了。这叫聪明反被聪明误么?这一点都不聪明。