FJUT-1864

Hero

Problem 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 (HP) and damage per shot (DPS). Your hero has almost infinite HP, but only 1 DPS.

To simplify the problem, we assume the game is turn-based, but not real-time. In each round, you can choose one enemy hero to attack, and his HP will decrease by 1. While at the same time, all the lived enemy heroes will attack you, and your HP will decrease by the sum of their DPS. If one hero's HP fall equal to (or below) zero, he will die after this round, and cannot attack you in the following rounds.

Although your hero is undefeated, you want to choose best strategy to kill all the enemy heroes with minimum HP loss.
Input
The first line of each test case contains the number of enemy heroes N (1 <= N <= 20). Then N lines followed, each contains two integers DPSi and HPi, which are the DPS and HP for each hero. (1 <= DPSi, HPi <= 1000)
Output
Output one line for each test, indicates the minimum HP loss.

SampleInput
1
10 2
2
100 1
1 100

SampleOutput
20
201
翻译(机翻)

英雄

问题描述
当你和上帝一样的对手和猪一样的队员玩DotA时,你必须面对一个尴尬的局面:你所有的队友都被杀了,你必须和1vN战斗。
游戏中的英雄有两个关键属性,生命值(HP)和每击伤害(DPS)。你的英雄几乎有无限的生命,但只有1点。
为了简化问题,我们假设游戏是基于回合的,但不是实时的。每轮可以选择一个敌方英雄进行攻击,其生命值降低1。同时,所有活着的敌方英雄都会攻击你,你的生命值会减少他们的DPS之和。如果一个英雄的生命值等于(或低于)0,他将在本回合后死亡,并且不能在接下来的回合中攻击你。
虽然你的英雄是不败的,但是你要选择最好的策略以最小的生命损失杀死所有的敌人英雄。

输入
每个测试用例的第一行包含敌人英雄的数量N(1<=N<=20)。接着是N行,每行包含两个整数DPSi和HPi,这是每个英雄的DPS和HP。(1<=DPSi,HPi<=1000)

输出
每次测试输出一行,表示最小HP损失。

样本输入
1
10 2
2
100 1
1 100

样本输出
20
201

#include<iostream>
#include<algorithm>
using namespace std;
struct hero{//结构体来存敌人的dps和hp
    int dps;
    int hp;
};
int cmp(hero x,hero y)
{
    return 1.0*x.dps/x.hp<1.0*y.dps/y.hp;//让每滴血的输出从小到大排序
}
int main(){
    int n;
    while(cin>>n){
        hero enemy[n];
        for(int i=0;i<n;i++){
            cin>>enemy[i].dps>>enemy[i].hp;
        }
        sort(enemy,enemy+n,cmp);//排序
        int sum=0;
        for(int i=n-1;i>=0;i--){
            sum=sum+enemy[i].dps*enemy[i].hp;//打死一个敌人要消耗的血量
            for(int j=0;j<i;j++){
            sum=sum+enemy[j].dps*enemy[i].hp;//同一回合其他敌人的伤害
            }
        }
        cout<<sum<<endl;//输出
    }
    return 0;
}

贪心思想,要注意不应先打dps高的敌人,而是dps/hp高的敌人。

全部评论

相关推荐

看到这个内容真是闹麻了。。。。。。现在有了AI以后很多人面试都会作弊吗?&nbsp;那对老老实实面试的人岂不是不公平....
程序员牛肉:公平那是对小孩子讲的童话故事,成年人的世界只有能不能接受失败的后果。 你要是能接受面试作弊被发现之后多家公司联合永久拉黑的后果,你就搞。
点赞 评论 收藏
分享
_mos_:我以为手抄报简历就已经很顶了,没想到还有表格简历
点赞 评论 收藏
分享
程序员饺子:正常 我沟通了200多个 15个要简历 面试2个 全投的成都的小厂。很多看我是27直接不会了😅
点赞 评论 收藏
分享
就前几天旅游的时候,打开抖音就经常刷到这类视频:以前是高学历学生、老师、主持人,现在做着团播、擦边主播的工作,以及那些经过精心包装的“职业转型”故事——从铺天盖地的VLOG到所谓的“04年夜场工作日记”,这些内容在初中升学、高考放榜等关键时间节点持续发酵。可以说非常直接且精准地在潜移默化地影响着心智尚未成熟的青少年,使其对特殊行业逐渐脱敏。那我就想问了:某些传播公司、平台运营者甚至某些夜场的老板,你们究竟在传递怎样的价值观?点开那些视频,评论区里也是呈现明显的两极分化:一种是​​经济下行论​​:“现在就业市场已经艰难到这种程度了吗?”​​一种是事实反驳派​​:这些创作者往往拥有名校背景,从事着...
牛客刘北:被环境教育的,为了能拿到足够的钱养活自己,不甘心也得甘心,现在的短视频传播的思想的确很扭曲,但是很明显,互联网玩上一年你就能全款提A6,但你全心全意不吃不喝工作一年未必能提A6,但是在高考中考出现这个的确很扭曲,在向大家传播“不上学,玩互联网也可以轻松年入百万”,不是人变了,是社会在变
预测一下26届秋招形势
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务