BZOJ 3856: Monster【杂题】

Description

Teacher Mai has a kingdom. A monster has invaded this kingdom, and Teacher Mai wants to kill it.

Monster initially has h HP. And it will die if HP is less than 1.

Teacher Mai and monster take turns to do their action. In one round, Teacher Mai can attack the monster so that the HP of the monster will be reduced by a. At the end of this round, the HP of monster will be increased by b.

After k consecutive round‘s attack, Teacher Mai must take a rest in this round. However, he can also choose to take a rest in any round.

Output "YES" if Teacher Mai can kill this monster, else output "NO".

Input

There are multiple test cases, terminated by a line "0 0 0 0".

For each test case, the first line contains four integers h,a,b,k(1<=h,a,b,k <=10^9).

Output

For each case, output "Case #k: " first, where k is the case number counting from 1. Then output "YES" if Teacher Mai can kill this monster, else output "NO".

Sample Input

5 3 2 2
0 0 0 0

Sample Output

Case #1: NO

题目大意:每论麦老师都要打怪物一拳,使怪物HP减少a滴血,怪物回复b滴血,麦老师每k论要休息一次,问能否打死怪物?

思路:大水题,唯一要注意的就是一击必杀的情况以及long long

#include<cstdio>
#define maxn 100009
using namespace std;
int main()
{
    long long h,a,b,k;
    int cas=0;
    while(1)
    {
        scanf("%lld%lld%lld%lld",&h,&a,&b,&k);
        if(!(h|a|b|k))break;
        printf("Case #%d: ",++cas);
        if((long long)(a-b)*k+b<0){printf("YES\n");continue;}
        if((long long)h-(a-b)*k<=0){printf("YES\n");continue;}
        if(a>=h){printf("YES\n");continue;}
        printf("NO\n");
    }
    return 0;
}

时间: 2024-12-27 10:38:56

BZOJ 3856: Monster【杂题】的相关文章

BZOJ 3856 Monster C++语言入门题

题目大意:给出怪物的血量,人物的攻击力,怪物每回合回血的能力,和人物几回合需要休息一次,问人物能否打败怪物. 思路:只需要简单的几个判断,不要漏掉情况即可. 1.摸怪物一下他就死了,那么他就死了. 2.一个完整的回合之后怪物处于费血状态,那么说明经过足够长的时间之后,怪物肯定会死. 3.在第一回合中,人物进行k次攻击,怪物回k-1次血的时候看能不能打死怪物,如果能,那么他肯定会死. 剩下的情况人物不会打败怪物. CODE: #include <cstdio> #include <cstr

BZOJ 3856 Monster 不公平博弈

题目大意:给定一只喵,初始h点HP,每回合先手砍一刀a点伤害,喵后手回b点血,先手k回合攻击之后休息一次,问先手能否砍死喵 C++语法基础题23333333 很容易WA- - #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; long long h,a,b,k; int cnt; int main() { whi

_杂题_

杂题集 是个放题的好地方! **** 5.28 **** - BZOJ [3052] 糖果公园 - 据说是一道区间操作的综合题,但现在貌似蹦了? 现在还是太水,之后再来写吧. *************

3856: Monster

3856: Monster Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 351  Solved: 161[Submit][Status][Discuss] Description Teacher Mai has a kingdom. A monster has invaded this kingdom, and Teacher Mai wants to kill it. Monster initially has h HP. And it will

BZOJ第一页刷题计划

BZOJ第一页刷题计划 已完成:1 / 100 BZOJ1000:A+B

【最小生成树杂题】

这里谈一下最小生成树 生成树的概念:连通图G的一个子图如果是一棵包含G的所有顶点的树,则该子图称为G的生成树.生成树是连通图的极小连通子图.所谓极小是指:若在树中任意增加一条边,则将出现一个回路:若去掉一条边,将会使之变成非连通图. 生成树各边的权值总和称为生成树的权.权最小的生成树称为最小生成树. 最小生成树一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边.常用于求最小生成树得算法包括kruskal(克鲁斯卡尔)算法或Prim(

[杂题]URAL1822. Hugo II&#39;s War

看懂题意的请直接跳过下一坨! 本人有表达障碍! ========================================== 题意: (题意真的很难很难懂啊!!!  去他娘的**) 有一个王国,王国里有一个国王(编号为1),他有(编号为2~n) n-1个臣子(这些臣子并不全和他有直接关系) 然后呢 国王要去打架,但是只有当他的x%个及以上的直系下属(与他有直接关系的臣子)做好打架的准备了,他才能去打架 他的直系下属也有下属,也要其中x%及以上的下属做好打架准备了,那些直系下属才会开始准备

hdu 3641 数论 二分求符合条件的最小值数学杂题

http://acm.hdu.edu.cn/showproblem.php?pid=3641 学到: 1.二分求符合条件的最小值 /*==================================================== 二分查找符合条件的最小值 ======================================================*/ ll solve() { __int64 low = 0, high = INF, mid ; while(low <=

hdu 4961 数学杂题

http://acm.hdu.edu.cn/showproblem.php?pid=4961 先贴个O(nsqrtn)求1-n所有数的所有约数的代码: vector<int>divs[MAXN]; void caldivs() { for(int i=1;i<MAXN;i++) for(int j=i;j<MAXN;j+=i) divs[j].push_back(i); } 有了这个当时理下思路就可写了,但是重复数处理注意: 1.用一个数组vis[]  vis[i]=1表示i存在