【hpuoj】三国杀

来源:互联网 发布:浙江网站建设 seo 编辑:程序博客网 时间:2024/04/27 16:40

问题 I: 三国杀

时间限制: 1 Sec 内存限制: 128 MB

提交: - 解决: - 状态

题目描述

《三国杀》是一款热门的桌上游戏,该游戏融合了西方类似游戏的特点,并结合中国三国时期背景,以身份为线索,以卡牌为形式,合纵连横,经过一轮一轮的谋略和动作获得最终的胜利。三国杀集合历史、文学、美术等元素于一身,在中国广受欢迎。


为了感受《三国杀》的魅力,KACA分析了游戏的流程。

游戏中的基础攻击卡牌是【杀】(出牌阶段,对攻击范围内除自己以外的一名角色使用,效果是对该角色造成1点伤害。)。

现在KACA假设了一种情况,现在有若干名玩家进行游戏,武将皆为白板,有若干条操作,KACA想知道操作后会产生什么结果。

已知攻击范围默认为1,相邻座位的玩家默认距离为1。

此外还有两种马具:

+h可使当其他角色出【杀】计算与该角色距离时,始终+h。

-h可使当该角色出【杀】计算与其他角色距离时,始终-h。

当然,一个角色最多只能装备一匹-h马和一匹+h马,若已有马具,再次装备同类型则会把之前的马具替换掉。

输入

多组测试数据。

第一行是两个数字n,m(2≤n≤1000,1≤m≤1000)分别代表玩家数量和操作次数。

下面m行有两种形式

1.某个玩家装备了一匹马,i P h(1≤i≤n,P为+或-,h(1≤h≤n)代表该马可提供的距离)

2.询问玩家A能否杀玩家B,K A B(K为一个字符,1≤A,B≤n)

输出

对于每组数据中的每次询问,若玩家A可以对玩家B出杀,则输出“No.# Can”,否则输出“No.# Cann't”,#代表A的编号。

样例输入

5 3K 1 31 - 1K 1 3

样例输出

No.1 Cann'tNo.1 Can
提交论坛

这道题真的说明了读题的重要性!

作为一个不玩三国杀的人,在某学长的科普下,理解错了三次题意;

花了一下午做这道并没有难度的题真是非常的……不知道该如何形容。

总之这类益智游戏,在下的智商可能真的有瓶颈。

//提醒一下注意三国杀是坐成一圈玩的

//玩游戏的人数可不是10人以内。

//一人能装备两种马具。(可能只有垃圾如我才读不懂题);


#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int main(){    int n,m;    while(~scanf("%d%d",&n,&m)){        int flag1[1005]={0};        int flag2[1005]={0};        char s[5],v;        int o,l;        for(int i=0;i<m;i++){            getchar();            scanf("%s",s);                 int r,j;            if(s[0]=='K')                {                    scanf("%d%d",&r,&j);                    if(r==j)printf("No.%d Cann't\n",r);                    else{                    if(r>j)                        l=min(r-j,n+j-r);                    else                        l=min(j-r,n+r-j);                        if(l+flag2[j]<=1+flag1[r])printf("No.%d Can\n",r);                        else printf("No.%d Cann't\n",r);                    }                            }            else{                int k=strlen(s);                 int t=0;                for(int b=0; b<k; b++)                    t=t*10+s[b]-'0';                getchar();                scanf("%c%d",&v,&o);                if(v=='-')                flag1[t]=o;                else flag2[t]=o;            }                      }    }    return 0;} 



0 0
原创粉丝点击