HDU-4310 Hero 贪心问题
2024-08-31 03:49:15
题目链接:https://cn.vjudge.net/problem/HDU-4310
题意
打dota,队友太菜,局势变成1vN。还好你开了挂,hp无限大(攻击却只有一点每秒-_-)。
但是你并不想被A太多下,所以问题来了
给出对面的血量和每秒输出大小
问怎么安排,使得打败所有人后掉血最少
思路
首先可以想到我们必须一个一个打,这样所有人的总输出时间最少
因为如果打A一下,B一下,AB总输出肯定更大
其次考虑1v2的情况,因为1vN同理可得
现有ab两敌人
先打a的总输出为
\[DPS_a*HP_a + DPS_b*(HP_a+HP_b)
\]
\]
先打b的总输出为
\[DPS_b*HP_b + DPS_a*(HP_a+HP_b)
\]
\]
差别就在 $$DPS_bHP_a , DPS_aHP_b $$
代码
#include <cstdio>
#include <algorithm>
using namespace std;
struct Hero{
int hp, dps;
Hero(int hp=0, int dps=0):hp(hp),dps(dps) {}
bool operator < (const Hero &a) const{
return dps*a.hp>a.dps*hp;
}
}heroes[25];
int main(void){
int n;
while (scanf("%d", &n)==1 && n){
for (int i=0; i<n; i++)
scanf("%d%d", &heroes[i].dps, &heroes[i].hp);
sort(heroes, heroes+n);
int sum=0, time=0;
for (int i=0; i<n; i++){
time+=heroes[i].hp;
sum+=heroes[i].dps*time;
}printf("%d\n", sum);
}
return 0;
}
Time | Memory | Length | Lang | Submitted |
---|---|---|---|---|
None | 1512kB | 621 | G++ | 2018-02-08 21:55:55 |
最新文章
- extern extern “C”用法详解
- java 单利模式
- jboss jms 实例
- Delphi下使用Oracle Access控件组下TOraSession控件链接
- Linux splint命令
- mysql pid文件
- linux 系统管理 使用技巧
- Redis和Memcache的区别分析
- C#判断文件是复制还是剪切
- 单点登陆CAS安装过程中可能遇到的问题
- MySQL高可用解决方案(MySQL HA Solution)
- 武汉科技大学ACM :1004: 华科版C语言程序设计教程(第二版)课后习题3.7
- PC-lint 简明教程
- PHP开发之路之一--WAMP的安装和配置
- Spring源码情操陶冶-AbstractApplicationContext#prepareRefresh
- 《Pro SQL Server Internals, 2nd edition》15w
- this和判断的位置对赋值的要求
- thinkphp5 数据库和模型
- Mysql canal 监控数据变化
- 源码安装postgresql数据库