点击打开题目

1851: KILL

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 27  Solved: 3

SubmitStatusWeb Board

Description

众所周知,yjj发现了一款新型的益智卡牌游戏叫SGK,游戏的具体内容是这样的:

(1)游戏方式:

1.游戏玩家分为两人A和B,双方生命值均为3点且各拥有不超过9张的手牌。由玩家A主动出牌发起进攻,若玩家A能打败玩家B则算玩家A胜利,否则算玩家B胜利。

2.游戏内打出的卡牌即为从手牌中丢弃。

3.为了增加游戏的乐趣,双方的手牌均为互相可见。

PS:1.玩家被打败的条件是生命值降为0,且没有恢复生命值的卡牌了。

2.若玩家已被打败,则不能够再出牌。

(2)卡牌类型:

“杀”牌(K):

1.直接打出一张指向对方,若对方不能打出一张“闪”牌进行响应,则对方损失一点生命值。(本方法只能使用一次)

2.用来响应“南蛮入侵”牌。

3.用来响应“决斗”牌。

“闪”牌(S):

1.用来响应“万箭齐发”牌。

2.用来响应“杀”牌。

“桃”牌(T):

1.在生命值降为0的时候可自动打出,为该玩家恢复一点生命值。

“南蛮入侵”牌(N):

1.直接打出一张指向对方,若对方不能打出一张“杀”牌进行响应,则对方损失一点生命值。(本方法可以使用任意次)

“万箭齐发”牌(W):

1.直接打出一张指向对方,若对方不能打出一张“闪”牌进行响应,则对方损失一点生命值。(本方法可以使用任意次)

“决斗”牌(J):

1.直接打出一张指向对方,由对方开始双方轮流打出一张“杀”牌进行响应,直到其中一方不能够打出“杀”牌为止,则该方损失一点生命值。(本方法可以使用任意次)

PS:1.用来响应的方法可以使用任意次。

2.若有牌可以响应则必须打出响应。

今天yjj邀请JS和DZ来玩这个游戏,由JS作为玩家A,DZ作为玩家B。现在告诉你JS和DZ的手牌,聪明的你能告诉yjj谁能够胜利么?

Input

首先输入一个整数T,代表有T组测试实例。(1<=T<=100)

对于每组测试,输入包含三行,第一行包含两个整数n、m,分别代表JS的手牌数和DZ的手牌数。(0<=n,m<=9)

接下两行分别代表JS的牌型和DZ的牌型,牌型均为上述牌型括号内的大写字母,用空格隔开。

Output

对于每组测试实例,若JS胜利则输出“JS”,若DZ胜利则输出“DZ”(不带引号)。

Sample Input

24 1
K K K K
S
4 1
W W W W
S

Sample Output

DZ
JS

第一次提交总是wa,原因是使用卡牌的顺序。

下面总结一下:

1.消耗闪的牌有杀和万箭齐发。消耗杀的牌有决斗、南蛮入侵,闪的处理很简单,但是决斗会伤到自己,而且还包括了一个互相消耗杀的过程,所以,应该安排好使用的顺序。

2.根据第一条,此题分为两方面削血。第一是需要用闪应答的,第二是需要用杀应答的。二者的顺序又是一个问题,这里考虑到对方0闪的情况,应该先用万箭齐发和杀。

3.先说应答“闪”的牌的排序:万箭齐发和杀本来都是消耗一张闪的,然而杀一回合只有一次,所以应该先万箭齐发,后判断对方是不是有闪,有的话就没必要杀,留着决斗吧。

4.再说应答“杀”的牌的排序:决斗是快速消耗对方杀的好牌,一定是先用的,但是要考虑到自己生命值是1的情况,给自己玩死了就不好了。所以应该先决斗,再南蛮入侵,再决    斗。

个人吐槽:太好玩!

AC代码如下:

#include <stdio.h>
struct pai
{int K;int S;int W;int N;int J;int life;
};int main()
{int u;int a,b;     //手牌数 int life;     //生命值 char t;scanf ("%d",&u);while (u--){scanf ("%d %d",&a,&b);struct pai JS={0};struct pai DZ={0};JS.life=3;DZ.life=3; getchar();while (a--){scanf ("%c",&t);getchar();if (t=='K')JS.K++;else if (t=='S')JS.S++;else if (t=='W')JS.W++;else if (t=='N')JS.N++;else if (t=='J')JS.J++;else if (t=='T')JS.life++;}while (b--){scanf ("%c",&t);getchar();if (t=='K')DZ.K++;else if (t=='S')DZ.S++;else if (t=='W')DZ.W++;else if (t=='N')DZ.N++;else if (t=='J')DZ.J++;else if (t=='T')DZ.life++;}//万箭齐发if (JS.W>0){DZ.S-=JS.W;}if (DZ.S<0){DZ.life+=DZ.S;DZ.S=0;}//杀! if (JS.K>0 && DZ.S<=0){DZ.life--;JS.K--;}//决斗 while (JS.J>0 && (JS.life>1 || JS.K>=DZ.K)){if (DZ.K!=0)      //消耗双方的"杀" {while (DZ.K--){if (JS.K==0){JS.life--;break;}else{JS.K--;if (DZ.K==0){DZ.life--;break;}}}}elseDZ.life--;JS.J--;}//南蛮入侵 if (JS.N>0){DZ.K-=JS.N;}if (DZ.K<0){DZ.life+=DZ.K;DZ.K=0;}//决斗 while (JS.J>0 && JS.K>=DZ.K){if (DZ.K!=0)     //消耗双方的"杀" {while (DZ.K--){if (JS.K==0){JS.life--;break;}else{JS.K--;if (DZ.K==0){DZ.life--;break;}}}}elseDZ.life--;JS.J--;}if (DZ.life<=0){printf ("JS\n");}else{printf ("DZ\n");}   }return 0;
}

【郑轻oj】1851-KILL(三国杀,贪心)(好玩!)相关推荐

  1. 2853: 小A的游戏昵称(郑轻oj)

    这个题,算是一道思维题: 拿到这个题,脑子一下蹦出来暴力for,但看到1e9这个范围就明白-->暴力铁T 紧接着就会想到等差数列求和公式(如果想到这里,已经成功一大半了) 3 5 7的等差求和, ...

  2. 郑轻校园网工具1.0正式版本首发

    2019独角兽企业重金招聘Python工程师标准>>> 郑轻校园网工具beta1.0版本首发,郑州轻工业学院专用,破解客户端,发射wifi,网络连接检测,傻瓜化一体工具. 下载地址h ...

  3. 郑轻第六届校赛 -- 部分题解

    1427: 数字转换 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 379  Solved: 93 SubmitStatusWeb Board Des ...

  4. 【郑轻】[1754]Chowhound!Chowhound!!Chowhound!!!

    很简单的一种比较~ #include<stdio.h> int main() {long int x;double a,b;scanf("%ld",&x);a= ...

  5. 【郑轻】[1391]李白饮酒

    倒推 刚开始想错了 应该是一次作诗喝了两次酒~ #include<stdio.h> int main() {int T,n,k;int i;scanf("%d",&am ...

  6. 【郑轻】[1837]LT说我不服

    1837: LT说我不服 Time Limit: 1 Sec   Memory Limit: 128 MB Description 对于上一道题目LT不服,表示那么简单的题目不屑于去做,所以我们决定加 ...

  7. 【郑轻】[1897]985的红绿灯难题

    1897: 985的红绿灯难题 Time Limit: 1 Sec   Memory Limit: 128 MB Description 已知红.绿.黄灯各持续r.g.y秒,985发现此时灯刚刚变绿, ...

  8. Java郑轻oj_郑州轻工业大学oj题解(c语言)1037: 四则运算

    加减乘除的题目我们在前面已经做的够多了,甚至不少同学都已经做到厌倦了,那么,不妨来学习一下如何在代码里进行加减乘除的运算吧. 1037是一道典型的实数与字符结合的题目.也是一道综合性比较强的题目,可能 ...

  9. zzuli_acm_oj 1851 KILL 小模拟

    有点小坑的模拟题,先解释下题意: 三国杀的简化版本,牌型有杀,闪,桃,万箭齐发,南蛮入侵,决斗 玩家是JS和DZ,JS行动一个回合,如果JS可以打死DZ,那么JS胜:否则DZ胜 题中解释的是: 杀只能 ...

最新文章

  1. Promise - js异步控制神器
  2. 败家玩意儿!Redis 竟然浪费了这么多内存!
  3. php多选框怎么传值,php多选框表单checkbox参数传递的问题解析
  4. Go并发编程之美-读写锁
  5. 强网杯2019 Copperstudy
  6. git常用命令_10、Git常用命令
  7. 分块内存映射处理大文件-例子
  8. 当Grid的数据源是View时,如何使用PeopleSoft自带的Save Function?
  9. 2、异步HTTP编程
  10. POJ-1236 Network of Schools 缩点
  11. 第 8 章 建造者模式
  12. asio::io_service被废弃的问题
  13. C++工业设备日志记录系统
  14. MiniProfiler工具介绍
  15. 微信昵称特殊字符保存StringEscapeUtils
  16. RTEC机器人_广东省中小学电脑机器人活动获奖结果公布
  17. 新、JQ知识点笔记整理。
  18. 生日了,总要写点什么
  19. 深度学习:使用pytorch训练cifar10数据集(基于Lenet网络)
  20. UVA 10387 Billiard

热门文章

  1. 833C语言程序设计与数据结构,2018年北方民族大学计算机技术833C语言程序设计与数据结构之C程序设计考研核心题库...
  2. ubuntu系统中文件解锁方法
  3. 毕业3年,从中软外包跳槽到京东集团,年薪翻倍,我经历了什么?
  4. 恩格尔系数越大,说明一个家庭越富裕
  5. Android“FakeID”签名漏洞分析和利用
  6. 【百度地图】仅显示中国边界区域
  7. 5款非常看好的电脑软件
  8. SSM常用注解及其含义
  9. Ubuntu下使用ipmsg(飞鸽传书)
  10. 第二次阅读作业--12061161 赵梓皓