码迷,mamicode.com
首页 > 其他好文 > 详细

9.16考试 第一题 X国的军队题解

时间:2017-09-17 19:04:59      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:scan   png   space   logs   while   ring   main   str   define   

技术分享

技术分享

技术分享

  这道题总体来看还是比较满意的。连想带打不超过半个小时,打了不到当时基本读懂后就感觉是贪心,但贪什么很重要,当时一开始想的是贪心死亡人数,从小到大搞,然后自己造了几个小数据,还好WA了,然后又列了一个式子,直接证明了贪心。式子如下:

    我们设有两个据点,一个A=x1,B=y1,另一个A=x2,b=y2。

    若x1-y1>x2-y2

      则先打A所需为 x1+(x2-(x1-y1))=x2+y1,先打B为x2+(x1-(x2-y2))=x1+y2。

      由上式可知x1+y2>x2+y1,所以应当先打A。

    其余同理。

  然后我们只要sort一遍打一个模拟就好了。

  

技术分享
 1 #include<iostream>
 2 #include<cstdlib>
 3 #include<cstdio>
 4 #include<cstring>
 5 #include<queue>
 6 #include<algorithm>
 7 #include<cmath>
 8 #include<map>
 9 #define N 100005
10 using namespace std;
11 int n,t;
12 struct no
13 {
14     long long a,b,c;
15 }node[N];
16 int px(no a,no b)
17 {
18     return a.c>b.c;
19 }
20 long long now,sum;
21 int main()
22 {
23     scanf("%d",&t);
24 while(t--)
25 {
26     scanf("%d",&n);
27     for(int i=1;i<=n;i++)
28     {
29         scanf("%lld%lld",&node[i].a,&node[i].b);
30         node[i].c=node[i].b-node[i].a;
31     }
32     sort(node+1,node+n+1,px);
33     now=sum=0;
34     for(int i=1;i<=n;i++)
35     {
36         if(now<node[i].b)
37         {
38             sum+=node[i].b-now;
39             now=node[i].b;
40         }
41         now-=node[i].a;
42     }
43     printf("%lld\n",sum);
44 }
45     return 0;
46 }
View Code

 

9.16考试 第一题 X国的军队题解

标签:scan   png   space   logs   while   ring   main   str   define   

原文地址:http://www.cnblogs.com/liutianrui/p/7536461.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!