FZU 1575 小学生的游戏【模拟二分】

某天,无聊的小斌叫上几个同学玩游戏,其中有比较笨的小兴,比较傻的小雪,可爱的小霞和自以为是的小楠。他们去找聪明的小明去给他们当裁判。判定谁取得游戏胜利。

而这个游戏是由小斌想个1到10000000的数字让大家猜,看谁先猜中。为了防止小斌作弊,小明记录下了游戏的整个过程。你的任务是判断小斌是否有作弊。

Input

输入数据包括多盘游戏。一次猜数包含两行,第一行是一个数字n(1<=n<=10000000),表示所猜数字。第二行是小斌的回答为"too high","too low","right on"三种答案之一。每盘游戏结束于"right on"。当n=0的时候,整个游戏结束。

Output

对于每盘游戏,若小斌确有撒谎,请输出一行"The guy is dishonest",否则请输出"The guy may be honest"。

Sample Input

10
too high
3
too low
4
too high
2
right on
5
too low
7
too high
6
right on
0

Sample Output

The guy is dishonest
The guy may be honest【分析】:分别在too high和too low时比较数字的大小,选出最小low值和最大high值,比较right on说出的数字合法(在low和high范围内为合法)与否。注意置位!

【代码】:

#include <iostream>
#include<string>
#include<algorithm>
#include<cstdio>
using namespace std;
#define oo 10000000
int n;
char a[500];
/*模拟二分*/
int main()
{
    int low=-1,high=oo;
    while(~scanf("%d",&n),n)
    {
        getchar();
        gets(a);
        if(a[4]==‘h‘)
        {
            if(high>n)
                high=n;
        }
        if(a[4]==‘l‘)
        {
            if(low<n)
                low=n;
        }
        if(a[0]==‘r‘)
        {
            if(n<high&&n>low)
            {
                puts("The guy may be honest");
            }
            else
            {
                puts("The guy is dishonest");
            }
            low=-1,high=oo;
        }
    }
}

模拟

  

时间: 2024-11-13 07:51:53

FZU 1575 小学生的游戏【模拟二分】的相关文章

codevs 1083 1083 Cantor表【模拟+二分改进】

题目链接: http://codevs.cn/problem/1083/ 一个模拟题,列表出来就是酱紫: 这样为了找到数据在哪一组,很明显就要二分一下,自己写一个改进的二分,类似STL中的lower_bound... 1 #pragma comment(linker, "/STACK:16777216") //防爆栈 2 #include<iostream> 3 #include<algorithm> 4 #include<cstdio> 5 #in

BZOJ 2756: [SCOI2012]奇怪的游戏 网络流/二分

2756: [SCOI2012]奇怪的游戏 Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 1594  Solved: 396[Submit][Status][Discuss] Description Blinker最近喜欢上一个奇怪的游戏. 这个游戏在一个 N*M 的棋盘上玩,每个格子有一个数.每次 Blinker 会选择两个相邻 的格子,并使这两个数都加上 1. 现在 Blinker 想知道最少多少次能使棋盘上的数都变成同一个数,如果永远不能变

仿苹果电脑任务栏菜单&amp;&amp;拼图小游戏&amp;&amp;模拟表单控件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

【BZOJ2756】奇怪的游戏(二分,最小割)

题意: Blinker最近喜欢上一个奇怪的游戏.这个游戏在一个 N*M 的棋盘上玩,每个格子有一个数.每次 Blinker 会选择两个相邻的格子,并使这两个数都加上 1.现在 Blinker 想知道最少多少次能使棋盘上的数都变成同一个数,如果永远不能变成同一个数则输出-1. n,m<=40 a[i,j]<=10^9 思路:假设我们已经询问最终是否都能变成数字D怎么做? 注意到黑白点染色后每次加的点必定是1黑点1白点 设黑格子有k1个,和为s1,白格子有k2个,和为s2 显然k1*d-s1=k2

FZU 2041 Checker (贪心+模拟)

题目地址: FZU 2041 这个题是昨天的队内选拔赛用的套题里的其中一道题,我当时想到方法了,但是没敢写..一个是对复杂度有些不确定,万一组数很多的话好像就会跪..而且感觉不太好实现,队里还卡着两道题,就打算等别的该出的题出了之后再写,结果没时间了.. 刚才按照那思路写了一下..结果就过了...真心醉了..我&--%¥%**--%% 思路是先枚举每个空隙,然后对该空隙向左向右贪心的一步步的去移动,剩下的就是小模拟了.然后找出所有空隙可能扩大的最大值就可以了. 代码如下: #include <

FZU 2203 单纵大法好 (二分 &amp;&amp; 贪心)

题意 : 老S最近喜欢上某个搜集战舰的游戏,这个游戏中很重要的一个内容是能编排自己的战舰,通过出击完成任务来获取资源或新的战舰.大家都说老S是一个"直男",所以他喜欢把战舰排成一条直线.目前老S正准备完成某个新的任务--"困难级丹麦海峡",可以将地图视为1*N的一列方格(下标为1,2,...,N),老S有K列战舰,每列战舰长度为A.老S可以将自己的战舰布局在地图中的任意位置,但是两列战舰之间至少要有一个空格子,并且显然战舰是不能重叠放置的.老S通过内部人员率先知道了

FZU 2178 礼物分配 (折半搜索+二分)

题目地址:FZU 2178 由于n最大是30,一次全搜的话妥妥的超时,那么可以采用折半搜索.分成相同的两份,对左边的一堆进行预处理,然后再处理右堆,每一次都对左堆进行二分,找最接近的.由于两个人取的不能相差多于1个,所以要对每个个数分开存储.并排序,排序是为了后边的二分. 代码如下: #include <iostream> #include <string.h> #include <math.h> #include <queue> #include <

bzoj4717 改装 模拟+二分

Description [题目背景] 小Q最近喜欢上了一款游戏,名为<舰队connection>,在游戏中,小Q指挥强大的舰队南征北战,从而成为了一名dalao.在游戏中,不仅船只能力很重要,搭配合适的装备更是如虎添翼.小Q潜心研究配装三十年,终于——把装备凑齐了. [题意描述] 小Q有n艘船,m件装备.为了简单起见,我们假定每艘船都只能携带一件装备,且可以携带任何一件装备.每艘船和每件装备都有自己的能力值.船携带装备时,能力值为两者相乘.另外,小q还有可能对船或装备进行改修(强化).改修成功

【ccf2017-12-2】游戏(模拟)

问题描述 有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号小朋友的顺时针方向,……,1号小朋友坐在n号小朋友的顺时针方向. 游戏开始,从1号小朋友开始顺时针报数,接下来每个小朋友的报数是上一个小朋友报的数加1.若一个小朋友报的数为k的倍数或其末位数(即数的个位)为k,则该小朋友被淘汰出局,不再参加以后的报数.当游戏中只剩下一个小朋友时,该小朋友获胜. 例如,当n=5, k=2时: 1号小朋友报数1: 2号小朋友报数2淘汰: 3号小朋友报数3