hdu4310 - Hero - 简单的贪心

2017-08-26  15:25:22

writer:pprp

题意描述:

? 1 VS n对战,回合制(你打他们一下,需要受到他们所有存活人的
攻击)
? 你的血量无上限,攻击力为1
? 对手血量及攻击力给定
? 消灭所有敌人掉最少的血量
? n ≤ 20

贪心的去做,应该优先解决那些攻击力高血量低的敌人,所以应该按照 攻击力/血量 降序排列然后处理就好了

代码如下:

/*
@theme:hdu 4310
@writer:pprp
@declare:简单的贪心算法 将攻击力/血量最高的敌人先进攻下来就行了
@date:2017/8/26
*/
#include <bits/stdc++.h>

using namespace std;
class enemy
{
public:
    double dps;
    double hp;
} emy[1010];

struct cmp
{
    bool operator()(const enemy& a, const enemy&b)
    {
        return a.dps/a.hp > b.dps/b.hp;
    }
};

int main()
{
    int n;

    while(cin >> n && n >= 1 && n <= 20)
    {
        double ans = 0;
        double sum_dps = 0;
        for(int i = 0 ; i < n ; i++)
        {
            cin >> emy[i].dps >> emy[i].hp;
            sum_dps += emy[i].dps;
        }

        sort(emy, emy + n,cmp());

//        for(int i = 0 ; i < n ;i++)
//        {
//              cout << emy[i].dps << " " << emy[i].hp << endl;
//        }

        for(int i = 0 ; i < n ; i++)
        {
            if(i == 0)
            {
                ans += emy[0].hp * sum_dps;
            }
            else
            {
                sum_dps -= emy[i-1].dps;
                ans += emy[i].hp * sum_dps;
            }
        }

        cout << ans << endl;
    }
    return 0;
}
时间: 2024-10-13 16:13:11

hdu4310 - Hero - 简单的贪心的相关文章

POJ 3069 Saruman&#39;s Army(水题,简单的贪心)

[题意简述]:在一条直线上有N个点,每个点的位置分别是Xi,现从这N个点中选择若干个点给他们加上标记.使得,对每个点而言,在其距离为R的范围内都有带有标记的店,问   至少   要有几个被标记的点. [分析]:我们可以对这个点的序列简单的排序,按照从左到右,从小到大,然后对于最左边的这一个点,我们计算从这个点开始加上这个距离R可以到达的最远的但又小于这个距离R的点是哪一个,然后以这个点为基准,重复上述的过程,最终计算出点的个数. 详见代码: //244K 63Ms #include<iostre

HDOJ 2037简单的贪心算法

代码: #include<iostream> using namespace std; int main() { int n,s,t1[100],t2[100],i,t,j; while(cin>>n) { if(n==0) break; s=1; for(i=0;i<n;i++) cin>>t1[i]>>t2[i]; for(i=0;i<n;i++) for(j=i+1;j<n;j++) { if(t2[i]>t2[j]) { t=

hdu---(4310)Hero(贪心算法)

Hero Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 2606    Accepted Submission(s): 1169 Problem Description When playing DotA with god-like rivals and pig-like team members, you have to face a

hduoj-1735 简单的贪心算法

字数统计 Time Limit: 1000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1987    Accepted Submission(s): 552 Problem Description 一天,淘气的Tom不小心将水泼到了他哥哥Jerry刚完成的作文上.原本崭新的作文纸顿时变得皱巴巴的,更糟糕的是由于水的关系,许多字都看不清了.可怜的Tom知道他闯下大祸了

ACM——Hero(类似贪心算法)

Description When playing DotA with god-like rivals and pig-like team members, you have to face an embarrassing situation: All your teammates are killed, and you have to fight 1vN. There are two key attributes for the heroes in the game, health point

HDU 1678 Shopaholic(简单数学题 贪心)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1678 Problem Description Lindsay is a shopaholic. Whenever there is a discount of the kind where you can buy three items and only pay for two, she goes completely mad and feels a need to buy all items in

whu新生赛:一道简单的贪心,然鹅我并不会做

C 仓鼠与奶茶 时间限制: 2000/1000 MS (Java/Others)    内存限制: 65536/32768 K (Java/Others) Special Judge: 无  问题描述 小仓鼠是武汉仓鼠大学(Wuhan Hamster University, WHU)的一名普通学生.仓鼠们 都特别喜欢喝奶茶,所以学校周边有很多诸如两点点,KoKo,茶千道之类的奶茶店. 武汉前段时间又经历了一波大降温,仓鼠们都被冷得瑟瑟发抖,不想出门,于是它们 决定点外卖.正如上面所说,外卖也有很

nyoj 喷水装置(一)(简单的贪心)

喷水装置(一) 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它为中心的半径为实数Ri(0<Ri<15)的圆被湿润,这有充足的喷水装置i(1<i<600)个,并且一定能把草坪全部湿润,你要做的是:选择尽量少的喷水装置,把整个草坪的全部湿润. 输入 第一行m表示有m组测试数据 每一组测试数据的第一行有一个整数数n,n表示共有n个喷水装置,随后的一行,有

hdu4004 简单二分+贪心

找到二分的左右值  然后对每一个中值进行判断 #include<stdio.h> #include<string.h> #include<algorithm> #include<iostream> using namespace std; int n,m,L; int num[500010]; int abs(int a) { return a<0?-a:a; } int max(int a,int b) { return a>b?a:b; }