这个帖子的 T2
思路就是贪心,优先把 G<C 的放在前面,G<C 的按 G 升序排序,G≥C 的按 C 降序排列。
但不知道排好序咋求过河时间,以下代码 20 分。
哪位大佬帮忙调一下 /bx /bx
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=25010;
struct P { int g,c; }a[N];
bool cmp(P a,P b) {
bool flag1=(a.g<a.c),flag2=(b.g<b.c);
if(flag1!=flag2) return flag1>flag2;
if(flag1) return a.g<b.g;
return a.c>b.c;
}
int main() {
int n; scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d %d",&a[i].g,&a[i].c);
sort(a+1,a+n+1,cmp); int ans=a[1].g+a[n].c;
for(int i=1;i<n;i++) ans+=max(a[i].c,a[i+1].g);
printf("%d",ans);
return 0;
}