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

「题解」:X国的军队

时间:2019-10-01 23:08:37      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:init   lin   pen   show   sig   str   alt   简单贪心   限制   

问题 A: X国的军队

时间限制: 1 Sec  内存限制: 256 MB

题面


题面谢绝公开。

题解


简单贪心。

按照存活的士兵数量(即参加战斗的士兵数量减去阵亡的士兵数量)排序。

若存活士兵数量相同则按照参与战斗的士兵数量排序。

顺序扫一遍统计答案。

技术图片
#include<bits/stdc++.h>
#define int long long
#define rint register int
#define read(A) A=init()
using namespace std;
inline int init()
{
    int a=0,b=1;char ch=getchar();
    while(ch<0||ch>9){if(ch==-)b=-1;ch=getchar();}
    while(ch>=0&&ch<=9){a=(a<<3)+(a<<1)+ch-0;ch=getchar();}
    return a*b;
}
int T,n,ans;
struct node{int ds,ns,cs;}p[1000005];
inline bool cmp(node A,node B){
    return (A.cs==B.cs)?A.ns<B.ns:A.cs<B.cs;
}
signed main()
{
//    freopen("data.in","r",stdin);
//    freopen("std.out","w",stdout);
    read(T);
    while(T--)
    {
        read(n);ans=0;
        for(rint i=1,ind,inn;i<=n;++i)
        {
            read(ind),read(inn);
            p[i].ds=ind,p[i].ns=inn;
            p[i].cs=inn-ind;
        }
        sort(p+1,p+n+1,cmp);ans=p[1].ns;
        for(rint i=2;i<=n;++i)ans=max(ans+p[i].ds,p[i].ns);
        printf("%lld\n",ans);
    }
}
View Code

「题解」:X国的军队

标签:init   lin   pen   show   sig   str   alt   简单贪心   限制   

原文地址:https://www.cnblogs.com/xingmi-weiyouni/p/11616271.html

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