zoukankan      html  css  js  c++  java
  • 2016HUAS暑假集训训练2 K

    题目链接:https://vjudge.net/contest/121192#problem/K

    这也是一道贪心题,刚开始写时以为只要对每一敌人的攻击和血的乘积进行从小到大排序即可,但老是结果错误,最后看了下别人的思路才知道要比值  也可以第一的血乘以第二个的攻击与第二的血乘以第一个的攻击进行排序,就很好解决了

    ac代码:

     1 #include <iostream>
     2 #include <fstream>
     3 #include <algorithm>
     4 using namespace std;
     5 class Hero{
     6 public :
     7     int DPSi;
     8     int HPi;
     9     friend istream& operator>>(istream &in,Hero &h)   //重载输入运算符
    10     {
    11     in>>h.DPSi>>h.HPi;
    12     return in;
    13     }
    14 };
    15 bool cmp(Hero h1,Hero h2)          //按h1的hpi*h2和h2的dpsi与h1的dpsi和h2的hpi比较
    16 { 17 18 19 return h1.HPi*h2.DPSi < h1.DPSi*h2.HPi ; 20 21 } 22 int main() 23 { 24 int n,sum,sun; 25 while(cin>>n&&n) 26 { 27 Hero hero[21]; 28 sum = 0; 29 for(int i = 0; i < n;i ++) 30 { 31 cin>>hero[i]; 32 sum += hero[i].DPSi; 33 } 34 sort(hero,hero+n,cmp); 35 36 sun = 0; 37 for(int j = 0; j < n; j ++) //每攻击一个人其他的人都会给自己造成伤害 38 { 39 sun+=sum*hero[j].HPi; 40 sum -= hero[j].DPSi; //杀一个人总攻击就会减少 41 } 42 cout<<sun<<endl; 43 } 44 return 0; 45 }
  • 相关阅读:
    周总结9
    TDtree冲刺第十天
    规划极限编程阅读笔记03
    TDtree冲刺第九天
    TDtree第八天
    规划极限编程阅读笔记02
    TDtree冲刺第七天
    周总结8
    TDtree冲刺第六天
    11/1
  • 原文地址:https://www.cnblogs.com/LIUWEI123/p/5698742.html
Copyright © 2011-2022 走看看