思路
一定要注意看题啊,我就是因为没看到 该玩家可以出任意张杀和斩
和 玩家也可以不出牌,直接进入对方的回合
导致赛时想了半天的特殊情况,头都快薅秃了。
因为一次可以出任意张杀和斩,所以当 c 1 > d 2 c_1>d_2 c1>d2 或者 c 3 > d 1 c_3>d_1 c3>d1 时,小 C 可以直接通过出杀和斩赢得游戏。
如果不行的话,小 C 一定保留杀,防止小 D 用斩杀死自己,并尽可能出斩,消耗小 D 的杀,防止被小 D 用杀杀死自己,所以当小 C 无法赢得游戏时,如果 d 1 > c 2 + c 3 d_1>c_2+c_3 d1>c2+c3 或者 d 3 > c 1 d_3>c_1 d3>c1,那么小 D 可以赢得游戏。
如果小 D 此时还是无法赢得游戏,那么小 D 也会保留杀,尽可能出斩,防止被小 C 用杀或斩杀死自己,所以小 C 还是无法杀死小 D ⋯ \cdots ⋯。
所以后续就是平局。
AC code
#include<bits/stdc++.h>
using namespace std;
#define ok continue
int T,c1,c2,c3,d1,d2,d3;
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d%d%d%d",&c1,&c2,&c3,&d1,&d2,&d3);
if(c1>d2||c3>d1){printf("C\n");continue;}
if(d1>c2+c3||d3>c1){printf("D\n");continue;}
printf("E\n");
}
return 0;
}