hdu4950 打怪(简单题目)
生活随笔
收集整理的這篇文章主要介紹了
hdu4950 打怪(简单题目)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:
? ? ? 打怪,一開始怪有h滴血,每回合可以讓對方減少a滴血,每次打完之后怪會恢復b滴血,每連續k回合之后自己會休息一回合,這一回合怪物依然回血,問是否可以把怪打死。
思路:
? ? ?比較好想,如果把怪打死就三種情況,1上來一擊打死,2在k回合之內打死,3在k回合之后打死了,如果是1的話,直接看看自己的攻擊力是不是可以一擊殺死就行了a>=h一擊殺死,2的話有一個細節要注意就是在殺死的時候對方是先被殺死后回血,所以k回合之內的最大傷害是(a-b)* (k - 1) + a ,如果最大傷害大于等于h那么就能在休息前打死,對于3,是長久戰,我們一個完整的回合的"純收入"是(a-b)* k - b,
? ? ? 打怪,一開始怪有h滴血,每回合可以讓對方減少a滴血,每次打完之后怪會恢復b滴血,每連續k回合之后自己會休息一回合,這一回合怪物依然回血,問是否可以把怪打死。
思路:
? ? ?比較好想,如果把怪打死就三種情況,1上來一擊打死,2在k回合之內打死,3在k回合之后打死了,如果是1的話,直接看看自己的攻擊力是不是可以一擊殺死就行了a>=h一擊殺死,2的話有一個細節要注意就是在殺死的時候對方是先被殺死后回血,所以k回合之內的最大傷害是(a-b)* (k - 1) + a ,如果最大傷害大于等于h那么就能在休息前打死,對于3,是長久戰,我們一個完整的回合的"純收入"是(a-b)* k - b,
如果大于0,那么早晚可以把怪物打死,如果三種都不滿足,那么就打不死了。
#include<stdio.h> int main () {__int64 h ,a ,b ,k;int cas = 1;while(~scanf("%I64d %I64d %I64d %I64d" ,&h ,&a ,&b ,&k) && h + a + b + k){if(a >= h)//一擊干死 {printf("Case #%d: YES\n" ,cas ++);continue;}if((a - b) * (k - 1) + a >= h){printf("Case #%d: YES\n" ,cas ++);continue;}if((a-b) * k - b > 0){printf("Case #%d: YES\n" ,cas ++);continue;} printf("Case #%d: NO\n" ,cas ++);}return 0; }
總結
以上是生活随笔為你收集整理的hdu4950 打怪(简单题目)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu4941 map交换行列
- 下一篇: hdu4971 流-最大权闭包