zoukankan      html  css  js  c++  java
  • 解题:PA 2014 Bohater

    题面

    我们把怪分成两类,打完了了能回血的和打完了不能回血的,然后分开打。

    对于能回血的,我们先打攻击力低的,因为如果先打一个攻击力高的显然不一定能直接打过,所以先打一些攻击力低的回回血。

    对于不能回血的,我们先打回血多的,因为如果能打完我们最后的血量是确定的,所以逆序来看相当于每次丢掉打怪回的血再加上打怪耗的血,这就和前面一样了。

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 using namespace std;
     5 const int N=100005;
     6 struct a
     7 {
     8     int id;
     9     long long atk,hpp;
    10 }mon1[N],mon2[N];
    11 long long hp,t1,t2;
    12 int n,c1,c2,outp[N];
    13 bool cmp1(a x,a y)
    14 {
    15     return x.atk==y.atk?x.hpp>y.hpp:x.atk<y.atk;
    16 }
    17 bool cmp2(a x,a y)
    18 {
    19     return x.hpp==y.hpp?x.atk<y.atk:x.hpp>y.hpp;
    20 }
    21 int main ()
    22 {
    23     scanf("%d%lld",&n,&hp);
    24     for(int i=1;i<=n;i++)
    25     {
    26         scanf("%lld%lld",&t1,&t2);
    27         if(t1<t2) mon1[++c1].atk=t1,mon1[c1].hpp=t2,mon1[c1].id=i;
    28         else mon2[++c2].atk=t1,mon2[c2].hpp=t2,mon2[c2].id=i; 
    29     }
    30     sort(mon1+1,mon1+1+c1,cmp1),sort(mon2+1,mon2+1+c2,cmp2);
    31     for(int i=1;i<=c1;i++)
    32     {
    33         if(hp<=mon1[i].atk) printf("NIE"),exit(0);
    34         hp+=mon1[i].hpp-mon1[i].atk,outp[++outp[0]]=mon1[i].id; 
    35     }
    36     for(int i=1;i<=c2;i++)
    37     {
    38         if(hp<=mon2[i].atk) printf("NIE"),exit(0);
    39         hp+=mon2[i].hpp-mon2[i].atk,outp[++outp[0]]=mon2[i].id;
    40     }
    41     printf("TAK
    ");
    42     for(int i=1;i<=n;i++) printf("%d ",outp[i]);
    43     return 0;
    44 }
    45 
    View Code
  • 相关阅读:
    HTTP协议
    python中os模块简介
    什么是HTML
    Django框架
    python递归
    web工程中的各种路径(eclipse开发)
    小白向:web中利用request.getPart()上传文件到服务器
    利用 html+css 画同心圆(concentric circles)——绝对布局与相对布局
    理解z-index和css中的层叠顺序问题(大神技术博的读后感?)
    二、系统初始化
  • 原文地址:https://www.cnblogs.com/ydnhaha/p/9809081.html
Copyright © 2011-2022 走看看