NOIP模擬 分糖果(貪心)
阿新 • • 發佈:2018-11-11
就是這道題
【題目分析】
竟然又是一道氵谷原題。。。。。。。
關於排序的正確性以及正確的排序見這篇部落格
【程式碼~】
#include<bits/stdc++.h> using namespace std; typedef long long LL; const int MAXN=5e4+10; int T,n; struct student{ LL a,b,c,x; friend inline bool operator<(const student &a,const student &b){ if(a.x!=b.x) return a.x<b.x; if(a.x<=0) return a.a<b.a; return a.b>b.b; } }stu[MAXN]; LL ans; int Read(){ int i=0,f=1; char c; for(c=getchar();(c>'9'||c<'0')&&c!='-';c=getchar()); if(c=='-') f=-1,c=getchar(); for(;c>='0'&&c<='9';c=getchar()) i=(i<<3)+(i<<1)+c-'0'; return i*f; } int main(){ T=Read(); while(T--){ n=Read(); for(int i=1;i<=n;++i){ stu[i].a=Read(),stu[i].b=Read(); if(stu[i].a>stu[i].b) stu[i].x=1; else{ if(stu[i].a<stu[i].b) stu[i].x=-1; else stu[i].x=0; } } sort(stu+1,stu+n+1); for(int i=1;i<=n;++i){ stu[i].a+=stu[i-1].a; stu[i].c=max(stu[i-1].c,stu[i].a)+stu[i].b; } cout<<stu[n].c<<'\n'; } return 0; }