jzoj 1591. 【普及模拟】游戏 解题报告

题目描述
两个核武器科学家Patrick和Roland,在研究核武器时突然觉得无聊,玩起了游戏,游戏当然也是跟核武器有关,游戏一开始在桌子上放了一些核材料,两个人轮流玩,Patrick先玩。游戏规则是每次玩家可以从这些核材料里选一些材料放到反应堆去,当然结果就是化为乌有,由于游戏太危险,所以只有A,B,C,D四种材料,而且允许的反应只有以下5种:

1.       AABDD

2.       ABCD

3.       CCD

4.       BBB

5.       AD

当某个人选不到材料进行反应时就输了,大家要知道两个人都是绝顶聪明的。
输入
第一行输入一个整数N(1<=N<=100),表示游戏次数,接下来N行,每行四个整数,分别表示游戏开始时A,B,C,D四种材料的数量。假设一开始每种材料的数量都在0到60之间。
输出
    对于每次游戏输出赢者的名字。
样例输入
6
0 2 0 2
1 3 1 3
1 5 0 3
3 3 3 3
8 8 6 7
8 8 8 8
样例输出
Roland
Patrick
Roland
Roland
Roland
Patrick

本题为博弈题

代码如下:
const
 w:array[1..5,1..4]of longint=((2,1,0,2),(1,1,1,1),(0,0,2,1),(0,3,0,0),(1,0,0,1));
var
 f:array[0..60,0..60,0..60,0..60]of longint;
 n,i,ans:longint;
 a,b,c,d:longint;

function dg(a,b,c,d:longint):longint;
var i:longint;
begin
 if f[a,b,c,d]<>0 then exit(f[a,b,c,d]);
 for i:=1 to 5 do
  if (a>=w[i,1])and(b>=w[i,2])and(c>=w[i,3])and(d>=w[i,4])
   then begin if dg(a-w[i,1],b-w[i,2],c-w[i,3],d-w[i,4])=2 then
             begin  f[a,b,c,d]:=1;
              exit(1); end;
        end;
   f[a,b,c,d]:=2;
   exit(2);
end;


begin
 assign(input,'j5.in');reset(input);
 assign(output,'j5.out');rewrite(output);
 readln(n);
 for i:=1 to n do
 begin
  readln(a,b,c,d);
  if dg(a,b,c,d)=2 then writeln('Roland')
                   else writeln('Patrick');
 end;
 close(input); close(output);
end.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值