题目:https://cn.vjudge.net/problem/Gym-101775L

PS:训练赛中被这道题折磨的不轻,和队友反复推必胜态与必败态试图推导出公式或者规律,然后推的心态逐渐失控,,,最后十分钟没辙了,队友站在一起,猜,猜一个规律出来,emmm,比赛半路中不经意听到旁边打过这场EC-final现场赛的学长说这题打表找规律,还在对面A题后讨论中听到16和偶数,嘿嘿,于是迫不得已猜规律,比赛还剩三十秒时交上去第三个规律,就,,,就A了,,,和另一位队友逗比的叫了起来,emmm,感觉rp消耗干净

思路:好的,回归正题,这道题虽说是一道打表找规律的题,但其实是可以当博弈思维题来看的,首先我们不难看出,S _ _ S是一个必胜态,谁在营造一个S _ _ S并逼对手先进这个区域谁就可以获胜,现在我们来考虑这个必胜态,我们不难发现在n==7时第一次有人(Panda)可以营造一个第一个对自己有利的必胜态,在panda先手在4位置放置一个S,不管sheep如何放置,panda都可以在另一方放置一个S达到S _ _ S来使自己获胜,我们不难看出,当营造完S _ _ S后,决定谁先进入这个禁区的是剩余空格的数量,当n==7时剩余数量m为偶数,也就是说一定是sheep先进入这个区域,panda获胜,继续推导我们发现,n==9时panda获胜,n==11,13,15时均可获胜,于是我们有一个大胆的猜想,大于7的奇数获胜,大于7的偶数平局,好的,恭喜你,你将收获一个红色wrong answer,其实我们并没有什么根据说明先手一定不会败,接下来考虑偶数的时候后手能否获胜,我们不难看出,如果先手下一个S之后,后手总可以下一个S产生必胜态并保证剩余的格子数可以使对面先进入这些禁区,于是偶数时先手需要尽量保持平局,于是先手使用打乱后手使后手营造不出必胜态,但后手能否在先手尽力干扰的情况下营造一个必胜态呢,不要忘了,先手营造的时候后手也是在干扰的,于是,我们想到那个神奇的数字——7,有七个格子可以供后手放置的时候后手就可以营造出对自已有利的局面,但考虑对面先放O,所以我们时不能在O方便放置S的,所以这个数字应该是8,当先手怎么阻止,都会给后手留至少相连的八个格子,这个局面我们不难画出:_ _ _ _ _ _ _ O _ _ _ _ _ _ _ _,而这个数字是——16

AC代码:

 #include <iostream>
#include <cstdio> using namespace std; int main()
{
int T, t = , n;
scanf("%d", &T);
while(T--) {
scanf("%d", &n);
if (n > && n & )
printf("Case #%d: Panda\n", ++t);
else if (n < )
printf("Case #%d: Draw\n", ++t);
else
printf("Case #%d: Sheep\n", ++t);
}
return ;
}

Gym - 101775L SOS 博弈 找规律的更多相关文章

  1. 51nod_1831: 小C的游戏(Bash博弈 找规律)

    题目链接 此类博弈不需要考虑sg函数,只需要确定必胜态和必败态,解题思路一般为打败先打表找规律,而后找规律给出统一的公式.打表方式:给定初始条件(此题中为ok[0]=ok[1]=0),然后从低到高枚举 ...

  2. HDU-1847 Good Luck in CET-4 Everybody! (博弈+找规律)

    大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工夫练习了,反正我知道的Kiki和Cici都是如此.当然,作为在考场浸润了十几载的当代大学生,Kiki和Cici更懂得考 ...

  3. 51nod 1831: 小C的游戏(Bash博弈 找规律)

    题目链接 此类博弈不需要考虑sg函数,只需要确定必胜态和必败态,解题思路一般为打败先打表找规律,而后找规律给出统一的公式.打表方式:给定初始条件(此题中为ok[0]=ok[1]=0),然后从低到高枚举 ...

  4. HDU 1079 Calendar Game(博弈找规律)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1079 题目大意:给你一个日期(包含年月日),这里我表示成year,month,day,两人轮流操作,每 ...

  5. Codeforces Gym 100015B Ball Painting 找规律

    Ball Painting 题目连接: http://codeforces.com/gym/100015/attachments Description There are 2N white ball ...

  6. Codeforces Gym 100637B B. Lunch 找规律

    B. Lunch Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100637/problem/B Des ...

  7. Gym 100962G Green Day (找规律)

    题意:你用k 个生成树构成一个完全图. 析:n 个点的完全图有n(n-1)/2个边,一个生成树有n-1个边,你有k 个生成树 即边数等于 K(n-1) ,即  n(n-1)/2 == k(n-1)   ...

  8. HDU 1847 (博弈 找规律) Good Luck in CET-4 Everybody!

    为了提高题解质量还是简单证明一下:3的倍数是必败状态. 如果n % 3 = 1,那么拿走1个石子:如果n % 3 = 2,那么拿走两个石子,都将转移到3的倍数的状态.所以每个必胜状态都有一个后继是必败 ...

  9. HDU 2897 (博弈 找规律) 邂逅明下

    根据博弈论的两条规则: 一个状态是必胜状态当且仅当有一个后继是必败状态 一个状态是必败状态当且仅当所有后继都是必胜状态 然后很容易发现从1开始,前p个状态是必败状态,后面q个状态是必胜状态,然后循环往 ...

随机推荐

  1. 054 Spiral Matrix 旋转打印矩阵

    给出一个 m x n 的矩阵(m 行, n 列),请按照顺时针螺旋顺序返回元素.例如,给出以下矩阵:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]应该返回 [1,2, ...

  2. python 遇到的一些问题和解决方法

    安装crypto  python3里面这个改成了pycryptodome 1. pip3 install pycryptodome 或者 pip3 install -i https://pypi.do ...

  3. 《四 spring源码》利用TransactionManager手写spring的aop

    事务控制分类 编程式事务控制          自己手动控制事务,就叫做编程式事务控制. Jdbc代码: Conn.setAutoCommite(false);  // 设置手动控制事务 Hibern ...

  4. noip搜索模拟题 骰子

    骰子 dice.cpp/c/pas 1s/128M [题目描述] 桌面上有两个特别的骰子.骰子的每一个面,都写了一个不同的数字.设第一个骰子上下左右前后分别为a1, a2, a3, a4, a5, a ...

  5. (译)Cg Programming/Unity(Cg编程/Unity)

    最近在学习Unity3d中的shader编程,能找到的中文资料比较少,于是,尝试翻译一下wiki Books上的资料,以方便其他跟我一样的入门学习者.由于是第一次翻译技术资料,经验不足,难免出错,请路 ...

  6. 遍历List集合的方式

    遍历List集合的方式有很多,现在举出最常见的三种 List<String> list = new ArrayList<String>(); list.add("a& ...

  7. HttpServeletRequest

    一.HttpServeletRequest 接口(javax.servlet.http) 定义:public interface HttpServletRequestextends ServletRe ...

  8. ApexSQL Log中的Redo Script跟原始SQL不一致问题

    最近遇到一个误更新数据的问题,使用ApexSQL Log做挖掘事务日志的时候,发现ApexSQL Log生成的Redo Script跟原始SQL是有区别的.它们并不是完全一致的.只是逻辑上等价而已.如 ...

  9. (转载)Newtonsoft.Json使用总结

    Newtonsoft.Json使用总结 初识JSON.......................................................................... ...

  10. 关于日志造成的频繁的IO

    记录日志可能消耗大量的IO [Q] 每次写入都是一个IO操作 即使是同一个文件 两次写入也要打开两次IO操作 [F] 设想有这样一个扩展  把php中要记录的日志 用文件名 和 内容的方式记录在内存中 ...