3829: 乌龟对对碰(语法周赛 Round 28(思维场))

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:1

题目描述

游戏规则

33DAI 最近在看一个乌龟对对碰游戏。游戏规则如下(下面所有的“乌龟”指的都是乌龟玩具):

游戏道具

  • 有一个 3\times 3 的九宫格棋盘。编号如下:
~ 第一列 第二列 第三列
第一行 1 2 3
第二行 4 5 6
第三行 7 8 9
  • 有 n 个乌龟,编号 1\sim n,每个乌龟都有一个颜色,第 i 个乌龟的颜色用一个整数 a_i 表示,颜色有 10 种,分别对应到数字 0\sim 9
  • 有一个幸运颜色 x0\sim 9 中的一种)

游戏流程

第一步、初始的乌龟数量限制为 m
第二步、按编号从小到大的顺序,依次在还存在的乌龟中拿乌龟,每拿一个,乌龟计数器 +1。每每个乌龟都放到一个空格子中,如果有多个空格子,放在编号最小的空格子中。
第三步、放的过程中,如果当前乌龟颜色是幸运颜色,那么乌龟数量限制 +1
第四步、放的过程中,如果已经放满了、或者乌龟计数器达到了乌龟数量限制,就开始进行结算。
第五步、结算后,如果乌龟计数器小于乌龟数量限制,那么会回到第二步,继续拿乌龟放到棋盘中。

结算规则

编号小的规则优先级更高,每个操作完成后都会再次从小到大检查所有规则,直到所有规则都不满足为止。

  1. 【全家福】如果当前棋盘上的乌龟颜色全都不一样,把棋盘上所有乌龟销毁,乌龟数量限制 +8
  2. 【同行】如果当前棋盘上 3 只颜色一样的乌龟在同一行,把这 3 只乌龟销毁,乌龟数量限制 +2
  3. 【同列】如果当前棋盘上 3 只颜色一样的乌龟在同一列,把这 3 只乌龟销毁,乌龟数量限制 +2
  4. 【对角线1】如果当前棋盘上 3 只颜色一样的乌龟在 1,5,9 这三个位置,把这 3 只乌龟销毁,乌龟数量限制 +2
  5. 【对角线2】如果当前棋盘上 3 只颜色一样的乌龟在 3,5,7 这三个位置,把这 3 只乌龟销毁,乌龟数量限制 +2
  6. 【碰】从 1\sim 9 依次检查棋盘上的每个位置 i,如果有另一个位置 j 上的乌龟颜色与 i 一致(如果有多个位置,挑选最小的 j),销毁这两只乌龟,乌龟数量限制 +1

常见的结算规则还有清盘的奖励,但本题不考虑。

题目描述

输入 n,m 以及 n 个乌龟的颜色 a_1\sim a_n。请输出最终乌龟计数器会变为多少。

输入

第一行为整数 n,m,x

第二行为一个长度为 n 的字符串,第 i 个字符为 a_i

输出

输出最终乌龟计数器的大小。

样例输入 复制

27 10 3
012345678999892922167450000

样例输出 复制

23

提示

样例解释

乌龟计数器 0、初始乌龟限制:10、幸运颜色为 3

第一轮

012345678999892922167450000
~~~~~~~~~ 

拿了 9 个乌龟,乌龟计数器变为 9,乌龟限制变为 11(触发了一次幸运颜色)

~ 第一列 第二列 第三列
第一行 0 1 2
第二行 3 4 5
第三行 6 7 8

结算时触发了第一条规则,棋盘清空,乌龟限制变为 19(【全家福】 +8

第二轮

012345678999892922167450000
xxxxxxxxx~~~~~~~~~ 

拿了 9 个乌龟,乌龟计数器 18,乌龟限制 19

~ 第一列 第二列 第三列
第一行 9 9 9
第二行 8 9 2
第三行 9 2 2

【同行+2】 乌龟限制变为 21,棋盘变为:

~ 第一列 第二列 第三列
第一行
第二行 8 9 2
第三行 9 2 2

【碰+1】 乌龟限制变为 22,棋盘变为:

~ 第一列 第二列 第三列
第一行
第二行 8 2
第三行 2 2

【碰+1】 乌龟限制变为 23,棋盘变为:

~ 第一列 第二列 第三列
第一行
第二行 8
第三行 2

第三轮

012345678999892922167450000
xxxxxxxxxxxxxxxxxx~~~~~ 

拿了 5 个乌龟,乌龟计数器 23,乌龟限制 23

~ 第一列 第二列 第三列
第一行 1 6 7
第二行 8 4 5
第三行 2

没有触发任何结算规则,游戏结束。

数据规模与约定

对于 100\% 的数据,1 \le n \le 10001 \le m \le 100a_i 与 x 必然是 0\sim 9 中的一个。

题目保证最终的乌龟计数器大小必然小于等于 n

数据是随机造的(当然这和本题做法也没有啥关系,只是提前声明一下 33DAI 非常懒,没有特殊构造)。

来源/分类