关闭

17225 狼人游戏[C]

标签: ICPC算法C17225狼人游戏
593人阅读 评论(0) 收藏 举报
分类:

17225 狼人游戏

时间限制:1000MS  内存限制:65535K
提交次数:24 通过次数:3 收入:111

题型: 编程题   语言: C++;C

Description

狼人游戏是一款深受大众欢迎的桌游。Ly作为初学者,自然也迷上这款刺激与智商并存的游戏。 可是有一件很忧伤的事,大家都知道狼人的角色牌分为狼人和非狼人,然后Ly经常玩一个晚上都抽不到狼人的角色。 为了抽到心爱的狼人,Ly开始观察主持人洗牌和发牌的规律。假设现在有n个人(分别编号1~n)玩游戏,也就是有n张牌,则主持人每一轮进行以下操作: 1.将手中的n张牌自顶到底编号1~n,并将它们从左到右放在反面放在桌面上; 2.记当前桌面剩下的牌里面,编号最小为m; 3.依此取编号为m,m+X,m+2*X....m+c*X的牌,直到m+c*X>n,每次取到的牌放到手牌的顶部; 4.如果桌面上还有牌,重复步骤2、3;否则洗牌完成,主持人重新将手牌自顶到底编号1~n; 5.游戏开始,主持人将第i张牌,发给编号为i的人; 6.游戏结束,主持人按游戏者编号回收角色牌,也就是第i个人的牌,放在第i位。 现在Ly知道自己的编号是k,还有就是在开局前,偷偷地把牌的初始状态记了下来,也就是说第一轮开始前第i张牌是不是狼人,Ly是知道的。游戏第一轮开始前主持人不洗牌。 由于大家今晚非常兴奋,打算玩通宵,你可以当作游戏进行了无数轮。Ly想知道他今晚有没有可能抽到狼人。但Ly正陶醉于游戏中,聪明的13级大神们,你可以帮Ly推测一下吗?O(∩_∩)O~



输入格式

第一行一个整数T(T<=20),表示测试数据的组数。
每组数据有两行。
第一行3个正整数n,X,k. n,X,k的含义如题目所述。
第二行一个长度为n的字符串,只由0和1组成。第i个字符代表初始状态下第i张牌的角色是不是狼人,1代表是,0代表不是。
数据范围:
3<=n<=1000
1<=k<=n
1<=X<=1000007



输出格式

每组数据输出一行。
如果Ly可以抽到狼人角色,输出”haha”;否则输出”hehe”。


输入样例

2
6 2 3
000010
6 2 1
000010


输出样例

haha
hehe


提示

1.在样例1中,第二轮开始前主持人洗牌后,角色牌的状况是000100;第三轮开始前主持人洗牌后的,角色牌的状况为010000;第四轮开始前主持人洗牌后,角色牌的状况为001000;于是坐在第3位
  的Ly将在第四轮抽到狼人。
2.狼人角色牌的数量可以有多个。
3.此题用整体法和隔离法均可解,请认真思考分析。


来源

Ly

作者

201131000515


思路:整体思路是将每次狼人出现的位置保存在一个数组,最后判断ly的位置上是否最终为狼人即可。

因为最多有1000个玩家,故每一张狼人牌最多有1000种位置,经过1000次循环就能遍历这张狼人牌出现的所有位置,可能有重复。

1010是为了保险起见,开数组1010也是为了保险起见。


代码

#include <stdio.h>
#include <string.h>

int main()
{
//    freopen("input.txt","r",stdin);
//    freopen("output.txt","w",stdout);
    int T,n,x,k,length,i,j,m,t;
    char a[1010];
    int c[1010],change[1010],b[1010],count;

    scanf("%d",&T);
    while(T--)
    {
        memset(b,0,sizeof(b));
        memset(c,0,sizeof(c));

        scanf("%d%d%d",&n,&x,&k);
        scanf("%s",a);
        length=strlen(a);
        for(count=1,i=0;i<length;i++)//统计有多少狼人
        {
            if(49==a[i])
            {
                b[count++]=i+1;
            }
        }
        for(i=1,j=0,m=1;i<=n;i++)//把洗牌顺序存在数组,带入相应坐标就知道下一次洗牌出现在什么位置
        {
            if(m+j*x<=n)
            {
                change[m+j*x]=n-i+1;
                j++;
            }
            else
            {
                m++;
                j=0;
                i--;
            }
        }
        for(t=1;t<=1010;t++)//每一张牌最多可能出现在1000种位置,1010是为了保险
        {
            for(i=1;i<count;i++)
            {
                c[b[i]]=1;//将每一次狼人的位置都存在一个数组
                b[i]=change[b[i]];
            }
        }
        if(c[k])
        {
            printf("haha\n");
        }
        else
        {
            printf("hehe\n");
        }
    }

    return 0;
}



0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

C#游戏开发之炸弹人游戏开发

笔者第一次发表文章,考虑不全多多包涵。也想借此机会和大家交流游戏开发。希望大神能指点一二。笔者是利用VS2010编译器,下面进入正题: 利用C#控件来实现2D游戏开发还是比较方便。先从总体上介绍炸弹人...
  • xty13145588950
  • xty13145588950
  • 2016-07-21 22:02
  • 1293

C++游戏系列1-角色类

【项目-游戏中的角色类】(1)基于下面设计的游戏中角色类,补充完整需要的成员函数,使角色能一定的规则行动或改变状态。下面代码中包含的是最基本的要求,可以根据你的设计进行扩充。class Role { ...
  • sxhelijian
  • sxhelijian
  • 2016-03-27 20:23
  • 2366

九宫格井字游戏(c语言)

#include #include #include int main(int argc,char** argv) { int player = 0; int winner ...
  • hanshuilingyue
  • hanshuilingyue
  • 2013-09-23 17:08
  • 2365

17228 真.狼人游戏[C]

去长春的飞机上,Bear Kids队跟One Piece队的队员深感无聊,于是,他们6个人玩起了一个很简单的游戏。 游戏规则是这样的,简化版狼人游戏,游戏中,身份只有两种,平民跟狼人。 游戏分为天黑阶...
  • u011875552
  • u011875552
  • 2015-04-08 23:51
  • 528

狼人杀游戏源码

  • 2017-10-30 20:43
  • 34.25MB
  • 下载

(狼人杀)游戏研究-Android

游戏中的功能研究:游戏的通信/充值/广告/分享 通信:环信 融云 SurfaceView 与 GLSurfaceView效率!   两款游戏引擎,一个是cocos2dx,另一款是andengine,其...
  • ShareUs
  • ShareUs
  • 2017-05-18 22:51
  • 830

17228 真.狼人游戏

17228 真.狼人游戏 时间限制:1000MS  内存限制:65535K 提交次数:29 通过次数:3 收入:158 题型: 编程题   语言: G++;GCC Description...
  • SCAU_BIN
  • SCAU_BIN
  • 2016-02-01 01:10
  • 352

不说话的“狼人杀”游戏

“狼人杀”游戏,是一种流行的卡牌游戏。这个游戏有若干张牌,每张牌上写着“狼人”,“村民”(有些复杂的玩法,还带有“女巫”,“预言家”等特殊角色)。牌的数目大于参与游戏的人数。通常的玩法是,一个人扮演法...
  • larryliuxinyu
  • larryliuxinyu
  • 2016-06-07 10:24
  • 2417

基于C#制作的狼人游戏介绍

ps:如果你觉得:C语言还看不明白呢,还看C#。那就错了,熟悉这个游戏的人都知道这是一个过程性的游戏,所以我的核心代码也是采用面向过程(与C一致)来写的,在C#的特殊之处我也会特别说
  • Xiaolu_Yiren
  • Xiaolu_Yiren
  • 2017-07-03 18:16
  • 300

c++ 实现狼人游戏

题目Task实现一个简单的“狼人游戏”通知机制Details角色有:村民,狼人,预言家,女巫,猎人(Uninitialized只用于默认构造函数) 法官呼叫“狼人/预言家/女巫/猎人”,相应角色进行...
  • qq_36124194
  • qq_36124194
  • 2017-06-01 13:34
  • 330
    个人资料
    • 访问:10041次
    • 积分:265
    • 等级:
    • 排名:千里之外
    • 原创:17篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章分类
    文章存档
    最新评论