#4029. 乌龟对对碰
乌龟对对碰
说明
本题需要使用文件重定向,输入文件名turtle.in,输出文件名turtle.out
游戏规则
33DAI 最近在看一个乌龟对对碰游戏。游戏规则如下(下面所有的“乌龟”指的都是乌龟玩具):
游戏道具
- 有一个 的九宫格棋盘。编号如下:
~ | 第一列 | 第二列 | 第三列 |
---|---|---|---|
第一行 | 1 | 2 | 3 |
第二行 | 4 | 5 | 6 |
第三行 | 7 | 8 | 9 |
- 有 个乌龟,编号 ,每个乌龟都有一个颜色,第 个乌龟的颜色用一个整数 表示,颜色有 种,分别对应到数字 。
- 有一个幸运颜色 ( 中的一种)
游戏流程
第一步、初始的乌龟数量限制为 。
第二步、按编号从小到大的顺序,依次在还存在的乌龟中拿乌龟,每拿一个,乌龟计数器 。每每个乌龟都放到一个空格子中,如果有多个空格子,放在编号最小的空格子中。
第三步、放的过程中,如果当前乌龟颜色是幸运颜色,那么乌龟数量限制 。
第四步、放的过程中,如果已经放满了、或者乌龟计数器达到了乌龟数量限制,就开始进行结算。
第五步、结算后,如果乌龟计数器小于乌龟数量限制,那么会回到第二步,继续拿乌龟放到棋盘中。
结算规则
编号小的规则优先级更高,每个操作完成后都会再次从小到大检查所有规则,直到所有规则都不满足为止。
- 【全家福】如果当前棋盘上的乌龟颜色全都不一样,把棋盘上所有乌龟销毁,乌龟数量限制
- 【同行】如果当前棋盘上 只颜色一样的乌龟在同一行,把这 只乌龟销毁,乌龟数量限制
- 【同列】如果当前棋盘上 只颜色一样的乌龟在同一列,把这 只乌龟销毁,乌龟数量限制
- 【对角线1】如果当前棋盘上 只颜色一样的乌龟在 这三个位置,把这 只乌龟销毁,乌龟数量限制
- 【对角线2】如果当前棋盘上 只颜色一样的乌龟在 这三个位置,把这 只乌龟销毁,乌龟数量限制
- 【碰】从 依次检查棋盘上的每个位置 ,如果有另一个位置 上的乌龟颜色与 一致(如果有多个位置,挑选最小的 ),销毁这两只乌龟,乌龟数量限制
常见的结算规则还有清盘的奖励,但本题不考虑。
题目描述
输入 以及 个乌龟的颜色 。请输出最终乌龟计数器会变为多少。
输入格式
第一行为整数 。
第二行为一个长度为 的字符串,第 个字符为 。
输出格式
输出最终乌龟计数器的大小。
27 10 3
012345678999892922167450000
23
样例解释
乌龟计数器 、初始乌龟限制:、幸运颜色为 。
第一轮
012345678999892922167450000
~~~~~~~~~
拿了 个乌龟,乌龟计数器变为 ,乌龟限制变为 (触发了一次幸运颜色)
~ | 第一列 | 第二列 | 第三列 |
---|---|---|---|
第一行 | 0 | 1 | 2 |
第二行 | 3 | 4 | 5 |
第三行 | 6 | 7 | 8 |
结算时触发了第一条规则,棋盘清空,乌龟限制变为 (【全家福】 )
第二轮
012345678999892922167450000
xxxxxxxxx~~~~~~~~~
拿了 个乌龟,乌龟计数器 ,乌龟限制
~ | 第一列 | 第二列 | 第三列 |
---|---|---|---|
第一行 | 9 | 9 | 9 |
第二行 | 8 | 9 | 2 |
第三行 | 9 | 2 | 2 |
【同行】 乌龟限制变为 ,棋盘变为:
~ | 第一列 | 第二列 | 第三列 |
---|---|---|---|
第一行 | |||
第二行 | 8 | 9 | 2 |
第三行 | 9 | 2 | 2 |
【碰】 乌龟限制变为 ,棋盘变为:
~ | 第一列 | 第二列 | 第三列 |
---|---|---|---|
第一行 | |||
第二行 | 8 | 2 | |
第三行 | 2 | 2 |
【碰】 乌龟限制变为 ,棋盘变为:
~ | 第一列 | 第二列 | 第三列 |
---|---|---|---|
第一行 | |||
第二行 | 8 | ||
第三行 | 2 |
第三轮
012345678999892922167450000
xxxxxxxxxxxxxxxxxx~~~~~
拿了 个乌龟,乌龟计数器 ,乌龟限制
~ | 第一列 | 第二列 | 第三列 |
---|---|---|---|
第一行 | 1 | 6 | 7 |
第二行 | 8 | 4 | 5 |
第三行 | 2 |
没有触发任何结算规则,游戏结束。
数据规模与约定
对于 的数据,,, 与 必然是 中的一个。
题目保证最终的乌龟计数器大小必然小于等于 。
数据是随机造的(当然这和本题做法也没有啥关系,只是提前声明一下 33DAI 非常懒,没有特殊构造)。