写一下这题的反省。
首先选相邻的两个比较是不用说的。
我自己的想法居然是分类讨论。
果然是被数学思想毒害了。
要注意的有两点:
等价于
(至少本题如此)
都是基本操作的说,但就是没想到。。
最后要注意的就是要把放到
中以配平成
使其消掉。
(本来就不是给别人看的所以自己懂就好)
#include<iostream> #include<algorithm> #define maxn 20010 #define ll long long int #define miin(a,b) ((a)<(b)?(a):(b)) #define maax(a,b) ((a)<(b)?(b):(a)) using namespace std; struct People{ ll a,b; bool operator < (const People &rhy)const{ return miin(a,rhy.b)<miin(rhy.a,b); } }dachen[maxn]; int main(){ int ci;cin>>ci; for(int t=1;t<=ci;t++){ int n;cin>>n; for(int i=1;i<=n;i++) cin>>dachen[i].a>>dachen[i].b; sort(dachen+1,dachen+n+1); ll f=0,s=0; for(int i=1;i<=n;i++) s+=dachen[i].a,f=maax(f,s)+dachen[i].b; cout<<f<<endl; } return 0; }