【郑轻oj】1851-KILL(三国杀,贪心)(好玩!)
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
Sample Output
第一次提交总是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(三国杀,贪心)(好玩!)相关推荐
- 2853: 小A的游戏昵称(郑轻oj)
这个题,算是一道思维题: 拿到这个题,脑子一下蹦出来暴力for,但看到1e9这个范围就明白-->暴力铁T 紧接着就会想到等差数列求和公式(如果想到这里,已经成功一大半了) 3 5 7的等差求和, ...
- 郑轻校园网工具1.0正式版本首发
2019独角兽企业重金招聘Python工程师标准>>> 郑轻校园网工具beta1.0版本首发,郑州轻工业学院专用,破解客户端,发射wifi,网络连接检测,傻瓜化一体工具. 下载地址h ...
- 郑轻第六届校赛 -- 部分题解
1427: 数字转换 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 379 Solved: 93 SubmitStatusWeb Board Des ...
- 【郑轻】[1754]Chowhound!Chowhound!!Chowhound!!!
很简单的一种比较~ #include<stdio.h> int main() {long int x;double a,b;scanf("%ld",&x);a= ...
- 【郑轻】[1391]李白饮酒
倒推 刚开始想错了 应该是一次作诗喝了两次酒~ #include<stdio.h> int main() {int T,n,k;int i;scanf("%d",&am ...
- 【郑轻】[1837]LT说我不服
1837: LT说我不服 Time Limit: 1 Sec Memory Limit: 128 MB Description 对于上一道题目LT不服,表示那么简单的题目不屑于去做,所以我们决定加 ...
- 【郑轻】[1897]985的红绿灯难题
1897: 985的红绿灯难题 Time Limit: 1 Sec Memory Limit: 128 MB Description 已知红.绿.黄灯各持续r.g.y秒,985发现此时灯刚刚变绿, ...
- Java郑轻oj_郑州轻工业大学oj题解(c语言)1037: 四则运算
加减乘除的题目我们在前面已经做的够多了,甚至不少同学都已经做到厌倦了,那么,不妨来学习一下如何在代码里进行加减乘除的运算吧. 1037是一道典型的实数与字符结合的题目.也是一道综合性比较强的题目,可能 ...
- zzuli_acm_oj 1851 KILL 小模拟
有点小坑的模拟题,先解释下题意: 三国杀的简化版本,牌型有杀,闪,桃,万箭齐发,南蛮入侵,决斗 玩家是JS和DZ,JS行动一个回合,如果JS可以打死DZ,那么JS胜:否则DZ胜 题中解释的是: 杀只能 ...
最新文章
- Promise - js异步控制神器
- 败家玩意儿!Redis 竟然浪费了这么多内存!
- php多选框怎么传值,php多选框表单checkbox参数传递的问题解析
- Go并发编程之美-读写锁
- 强网杯2019 Copperstudy
- git常用命令_10、Git常用命令
- 分块内存映射处理大文件-例子
- 当Grid的数据源是View时,如何使用PeopleSoft自带的Save Function?
- 2、异步HTTP编程
- POJ-1236 Network of Schools 缩点
- 第 8 章 建造者模式
- asio::io_service被废弃的问题
- C++工业设备日志记录系统
- MiniProfiler工具介绍
- 微信昵称特殊字符保存StringEscapeUtils
- RTEC机器人_广东省中小学电脑机器人活动获奖结果公布
- 新、JQ知识点笔记整理。
- 生日了,总要写点什么
- 深度学习:使用pytorch训练cifar10数据集(基于Lenet网络)
- UVA 10387 Billiard