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

HDU 4310 贪心

时间:2016-02-25 01:36:17      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:

题意 在游戏中你的dps为1但是hp无限 给出n个敌人的dps与hp 你一秒能打掉一个敌人你的dps的hp 当你输出的时候 所有活着的敌人都会打你 求杀死所有敌人时你掉的最少hp

一开始想错了 排序的时候先处理了dps更高的 然后wa

即使在游戏中这也是很傻的..

应该处理dps/hp更高的 如果放在游戏里讲应该是先杀输出能力弱的...

如果直接return a.dps/a.hp>b.dps/b.hp会出现小数

所以用 return a.dps*b.hp>b.dps*a.hp

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<map>
#include<math.h>
using namespace std;
struct node
{
    long long int dps;
    long long int hp;
};
node a[25];
int cmp(node a,node b)
{
    return a.dps*b.hp>b.dps*a.hp;
}
int main(){
int n;
while(~scanf("%d",&n))
{
    long long int sum=0;
    for(int i=1;i<=n;i++)
    {
        scanf("%I64d%I64d",&a[i].dps,&a[i].hp);
        sum+=a[i].dps;
    }
    sort(a+1,a+1+n,cmp);
    long long int ans=0;
    for(int i=1;i<=n;i++)
    {
        ans+=sum*a[i].hp;
        sum-=a[i].dps;
    }
    printf("%I64d\n",ans);
}
}

  

HDU 4310 贪心

标签:

原文地址:http://www.cnblogs.com/rayrayrainrain/p/5215633.html

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