【BJOI2009】取石子游戏

来源:互联网 发布:linux测试环境搭建 编辑:程序博客网 时间:2024/06/05 04:15

【BJOI2009】取石子游戏

【题目描述】

小H和小Z正在玩一个取石子游戏。 取石子游戏的规则是这样的,每个人每次可以从一堆石子中取出若干个石子,每次取石子的个数有限制,谁不能取石子时就会输掉游戏。 小H先进行操作,他想问你他是否有必胜策略,如果有,第一步如何取石子。

【输入】

输入文件的第一行为石子的堆数N 接下来N行,每行一个数Ai,表示每堆石子的个数 接下来一行为每次取石子个数的种类数M 接下来M行,每行一个数Bi,表示每次可以取的石子个数,输入保证这M个数按照递增顺序排列。

【输出】

输出文件第一行为“YES”或者“NO”,表示小H是否有必胜策略。 若结果为“YES”,则第二行包含两个数,第一个数表示从哪堆石子取,第二个数表示取多少个石子,若有多种答案,取第一个数最小的答案,若仍有多种答案,取第二个数最小的答案。

【输入样例】

4
7 6 9 3
2
1 2

【输出样例】

YES
1 1

【数据范围】

对于全部数据,N≤10,Ai≤1000,M≤10,Bi≤10

【题解】

取石子游戏的升级版。普通的取石子游戏只有一个每次取的上限m,所以SG(n)=n mod m。但这里是限制了每次取的方案,所以要另辟蹊径。

由于数据很小,所以直接暴力SG值是可行的。

观察到Bi≤10,所以其实暴力出0~10的SG值以后,找规律也是可行的。

归根结底,博弈论的思想就是暴力SG+寻找规律= =

【代码】

虽然我是暴力,但一样秒杀了QwQ

【BJOI2009】取石子游戏#代码
0 0
原创粉丝点击