Codeforces 487A Fight the Monster
来源:互联网 发布:mac升级后koala报错 编辑:程序博客网 时间:2024/05/20 18:44
A monster is attacking the Cyberland!
Master Yang, a braver, is going to beat the monster. Yang and the monster each have 3 attributes: hitpoints (HP), offensive power (ATK) and defensive power (DEF).
During the battle, every second the monster's HP decrease by max(0, ATKY - DEFM), while Yang's HP decreases bymax(0, ATKM - DEFY), where indexY denotes Master Yang and index M denotes monster. Both decreases happen simultaneously Once monster'sHP ≤ 0 and the same time Master Yang's HP > 0, Master Yang wins.
Master Yang can buy attributes from the magic shop of Cyberland: h bitcoins per HP, a bitcoins per ATK, and d bitcoins per DEF.
Now Master Yang wants to know the minimum number of bitcoins he can spend in order to win.
The first line contains three integers HPY, ATKY, DEFY, separated by a space, denoting the initial HP,ATK and DEF of Master Yang.
The second line contains three integers HPM, ATKM, DEFM, separated by a space, denoting the HP, ATK and DEF of the monster.
The third line contains three integers h, a, d, separated by a space, denoting the price of1 HP, 1 ATK and1 DEF.
All numbers in input are integer and lie between1 and 100 inclusively.
The only output line should contain an integer, denoting the minimum bitcoins Master Yang should spend in order to win.
1 2 11 100 11 100 100
99
100 100 1001 1 11 1 1
0
For the first sample, prices for ATK andDEF are extremely high. Master Yang can buy99 HP, then he can beat the monster with 1 HP left.
For the second sample, Master Yang is strong enough to beat the monster, so he doesn't need to buy anything.
把所有的攻击力与防御力的可能枚举一遍(所需血量是可以通过这两个值计算出来的),取最小的花费。
#include<stdio.h>#include<algorithm>using namespace std;struct p{ int atk; int def; int cost;}c[20005];bool cmp(p aa,p bb){ return aa.cost<bb.cost;}int main(){ int yh,ya,yd,ma,md,mh,moh,moa,mod; int s=0; int cost=0; scanf("%d%d%d",&yh,&ya,&yd); scanf("%d%d%d",&mh,&ma,&md); scanf("%d%d%d",&moh,&moa,&mod); while (ya<=md) { ya++; cost=cost+moa; } for (int i=0;i<=100;i++) { for (int j=0;j<=100;j++) { s++; c[s].atk=ya+i; c[s].def=yd+j; if ((ma-c[s].def)<=0) { c[s].cost=cost+(c[s].def-yd)*mod+(c[s].atk-ya)*moa; break; } if ((mh%(c[s].atk-md))==0) { if (yh-(mh/(c[s].atk-md))*(ma-c[s].def)<=0) { c[s].cost=cost+(c[s].def-yd)*mod+(c[s].atk-ya)*moa+moh*(-yh+(mh/(c[s].atk-md))*(ma-c[s].def))+moh; } else { c[s].cost=cost+(c[s].def-yd)*mod+(c[s].atk-ya)*moa; } } if ((mh%(c[s].atk-md))!=0) { if (yh-(mh/(c[s].atk-md)+1)*(ma-c[s].def)<=0) { c[s].cost=cost+(c[s].def-yd)*mod+(c[s].atk-ya)*moa+moh*(-yh+(mh/(c[s].atk-md)+1)*(ma-c[s].def))+moh; } else { c[s].cost=cost+(c[s].def-yd)*mod+(c[s].atk-ya)*moa; } } } } sort(c+1,c+s+1,cmp); printf("%d\n",c[1].cost);}
- codeforces 487A Fight the Monster
- 【Codeforces】 487A Fight the Monster
- CodeForces 487A Fight the Monster
- codeforces #487A# Fight the Monster(枚举)
- Codeforces 487A Fight the Monster(暴力)
- Codeforces 487A Fight the Monster
- codeforces 487 A Fight the Monster 暴力枚举
- Codeforces Round #278 (Div. 1) A. Fight the Monster( 暴力)
- CF488C Fight the Monster
- Codeforces Round #278 (Div. 2) 488C.Fight the Monster
- Codeforces 488 C. Fight the Monster(模拟)
- Codeforces Round #278 (Div. 2) C. Fight the Monster(暴力)
- codeforces 488C Fight the Monster(枚举)
- Codeforces 488C Fight the Monster【二分+枚举】
- CodeForces 488 C.Fight the Monster(枚举)
- CodeForces 787A The Monster
- CF_487A Fight the Monster(二分)
- Fight the Monster题解报告
- crontab介绍 + 小示例 + crontab不执行的原因
- 测试驱动开发
- Linux Mint 与 Windows7 双系统更改启动顺序
- 某不知名的题 - 概率DP
- 支持向量机
- Codeforces 487A Fight the Monster
- Node.js判断 json格式
- 【转载】Android app 安全测试调研及执行
- eclipse更新之后,出现adb问题无法解决
- ubuntu终端使用ack-grep输入tab自动补全后,多一个空格
- 学习java的漫漫旅途.2
- adb shell命令详解
- hibernate的配置
- 栈(链式存储)