L - SOS Gym - 101775L 博弈
2024-09-27 11:49:45
题目链接:https://cn.vjudge.net/contest/274151#problem/L
题目大意:给你一个1*n的方格,两个人轮流放字母,每一次可以放"S"或者"O",问你谁最先构成"SOS".
具体思路:首先找到必胜态,"S_ _S".这种时候,在其他地方都已经放满的情况下,无论第一个人怎么下,都是第二个人赢.然后要想构造出这种的情况长度就至少为7.然后就开始看谁先能构造出这个东西了.
当长度大于等于7并且是奇数的时候,这个时候先手必赢.
当长度是偶数的时候,如果第一次是先手先放一个S的话,后手肯定能比先手先构造出必胜态,
所以说就开始讨论先手不放S.
如果先手不先放S,要是想赢就必须长度为偶数,并且当第一次放入棋子之后,至少有连续的7个空白的还可以放旗子,第一次先手先放置一个0,然后这个时候后手就会再放一个然后这个时候就开始往长度是偶数的时候想,这个时候 "先手" 就相当于 长度是偶数的 时候的"后手" 所以这种时候先手胜.
AC代码:
#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<stdio.h>
#include<queue>
using namespace std;
# define ll long long
# define inf 0x3f3f3f3f
const int maxn = +;
# define mod
int main()
{
int T;
int Case=;
scanf("%d",&T);
while(T--)
{
int n;
scanf("%d",&n);
if(n>=&&n%==)printf("Case #%d: Sheep\n",++Case);
else if(n%!=&&n>=) printf("Case #%d: Panda\n",++Case);
else printf("Case #%d: Draw\n",++Case);
}
return ;
}
最新文章
- Rust初步(四):在rust中处理时间
- 【转】Bloom Filter布隆过滤器的概念和原理
- DFS:Red and Black(POJ 1979)
- Hibernate使用原生sql语句
- POJ 1064 Cable master (二分答案)
- 关于WIFI的工作模式--AP MODE/STATION MODE
- bzoj1453
- 纯CSS完美实现垂直水平居中的6种方式
- SqlDbHelper备份,做项目时方便应用(目前不太全,把自己项目中的逐渐转移过来)
- [转]printf 字符串格式化
- Log4net 参数详解
- isNAN()的使用
- Java正则过滤
- python一次性解压多层嵌套zip压缩包
- node os模块
- eclipse中用maven创建web项目
- webpack使用五
- VS2010 调试C++项目 fatal error LNK1123 错误解决办法
- 洛谷P1140 相似基因 (DP)
- linux文件和目錄管理的基本命令命令