HDU 4310 贪心

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 4310 贪心相关的知识,希望对你有一定的参考价值。

题意 在游戏中你的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 贪心的主要内容,如果未能解决你的问题,请参考以下文章

HDU - 4310 Hero(贪心)

HDU4310:Hero

bzoj 4310 跳蚤

hdu2037 今年暑假不AC[贪心][区间调度问题]

HDU 6034 Balala Power!(贪心 + 进制)

[HDU4864]Task (贪心)