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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了9.16考试 第一题 X国的军队题解相关的知识,希望对你有一定的参考价值。

技术分享

技术分享

技术分享

  这道题总体来看还是比较满意的。连想带打不超过半个小时,打了不到当时基本读懂后就感觉是贪心,但贪什么很重要,当时一开始想的是贪心死亡人数,从小到大搞,然后自己造了几个小数据,还好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国的军队题解的主要内容,如果未能解决你的问题,请参考以下文章

csp-s模拟测试10.1(b)X 国的军队,排列组合, 回文题解

9.5 考试 第一题 礼物题解

[CSP-S模拟测试]:X国的军队(贪心)

9.18考试 第一题count题解

10.12 考试 第一题 字符串题解

9.16考试总结(一个什么都不会的菜鸟)