Part2.5 P2123 皇后游戏 【贪心、思维】
原题链接:P2123 皇后游戏 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
题意:
思路:证明题解:题解 P2123 【皇后游戏】 - TA123 的博客 - 洛谷博客 (luogu.com.cn)
实现:
1 #include2 using namespace std; 3 //#define mod 1000000007 4 typedef long long ll; 5 struct node 6 { 7 ll a,b,d; 8 }v[20005]; 9 bool cmp(struct node e1,struct node e2) 10 { 11 if(e1.d*e2.d>0) 12 { 13 if(e1.d<0&&e2.d<0) return e1.a<e2.a; 14 if(e1.d>0&&e2.d>0) return e1.b>e2.b; 15 //return e1.d 16 } 17 else return e1.d<e2.d; 18 } 19 int main() 20 { 21 int T; 22 scanf("%d",&T); 23 while(T--) 24 { 25 int n; 26 scanf("%d",&n); 27 for(int i=1;i<=n;i++) 28 { 29 scanf("%lld%lld",&v[i].a,&v[i].b); 30 v[i].d=v[i].a-v[i].b; 31 } 32 sort(v+1,v+1+n,cmp); 33 ll last=v[1].a+v[1].b,sum=v[1].a; 34 for(int i=2;i<=n;i++) 35 { 36 sum+=v[i].a; 37 last=max(last,sum)+v[i].b; 38 } 39 printf("%lld\n",last); 40 } 41 return 0; 42 }