BZOJ 3709: [PA2014]Bohater 贪心

来源:互联网 发布:如何查看mac激活时间 编辑:程序博客网 时间:2024/04/28 22:49

时空隧道


分析:
这种题基本上都是贪心了…
我们考虑怎样安排才能使得自己不会死掉…QAQ…当然是生命值越大越好…所以为们应该贪心的先使自己的生命值增大再去减小生命值…
所以我们就得到了一个大概的贪心方法…对于每一个怪物记录一个值叫做c=a-d…然后先选c>0的再选c<0的…
那么c>0的应该按照怎样的顺序呢?
还是同样的贪心思想…先选伤害小的…这样能够使得自己死的慢一点…(反正你最后生命值都在增大…所以就要把伤害打的留在后面生命值大的时候去干掉怪物…)
那c<0的时候呢?当然是先选回血值大的…因为反正你都要减小生命值了…那么你就尽可能的让自己回血多一点…
(小环子有一个更机智的解释(QAQ为此她嘲笑了我好久QAQ):
倒着想…就是我们考虑最后一个…因为受的总伤害值是不变的…所以说最后一个回血值是没有用的,那就让他尽量小…机智啊…)


代码如下:

#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>//by NeighThornusing namespace std;//秋兰兮麋芜,罗生兮堂下const int maxn=100000+5;int n,stk[maxn]; long long z;struct M{    int a,d,c,num;}s[maxn];inline bool cmp1(M x,M y){    return x.c>y.c;}inline bool cmp2(M x,M y){    return x.d<y.d;}inline bool cmp3(M x,M y){    return x.a>y.a;}signed main(void){    scanf("%d%lld",&n,&z);    for(int i=1;i<=n;i++)        scanf("%d%d",&s[i].d,&s[i].a),s[i].c=s[i].a-s[i].d,s[i].num=i;    sort(s+1,s+n+1,cmp1);int id=1;    for(;id<=n&&s[id].c>0;id++);id--;    sort(s+1,s+id+1,cmp2);sort(s+id+1,s+n+1,cmp3);    for(int i=1;i<=n;i++){        z-=s[i].d;        if(z<=0) {puts("NIE");return 0;}        else z+=s[i].a,stk[i]=s[i].num;    }puts("TAK");    for(int i=1;i<=n;i++)        printf("%d ",stk[i]);    puts("");    return 0;}

by >_< NeighThorn

1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小兔子买回来两天不拉屎怎么办 大狗生了小狗把小狗咬死了怎么办 狗妈妈一直咬小狗的脐带怎么办 狗狗体内驱虫驱不干净怎么办 打老鼠脚被老鼠咬了怎么办 天正画的cad打开显示空白怎么办 苹果手机信息被拉进群聊怎么办 空调的控制线的报验资料怎么办 窗窗户罩子护栏上的瓦楞板怎么办 酸洗好的带钢容易返锈怎么办 化肥撤到小树苗上现在变黑了怎么办 尿素液烧的太慢了怎么办 天堂鸟肥料施多了黄叶了怎么办 死水塘养的鱼每天在死怎么办 北京的阿姆斯肥把苗都烧死了怎么办 纱窗被老鼠咬了个洞 怎么办 低电量模式下动态墙纸不能用怎么办 吃的包装袋执行标准错了怎么办 退换东西的时候外包装坏了怎么办 闲鱼买家以与描述不符退货怎么办 闲鱼买家申请退款又签收了怎么办 店铺买的手机是拆开过的怎么办 卖家以包装破损拒收快递怎么办 车辆迁出落户信封被自己拆开怎么办 快递签收了发现物品坏了怎么办 快递签收后发现货坏了怎么办 闲鱼退货有破损卖家要求赔偿怎么办 邮政快递收货后发现快递破损怎么办 中通把包裹发到别的省份去了怎么办 寄快递没拿单子但东西破损了怎么办 快递签收以后发现东西少了怎么办 淘宝时收到的货破损我该怎么办 淘宝买的冰箱七天无理由退货怎么办 截图放进ai中变得很模糊怎么办 买房子的贷款合同丢了怎么办 索尼9000e挂墙后面借口怎么办 想把木头锯成小块的怎么办 第一天上班交接完工作想辞职怎么办 POS机刷卡成功没打出单子怎么办 建行买的理财保险单子丢了怎么办 退休老师饭卡的钱突然少了怎么办