云顶之弈
You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.
题目背景
小明喜欢玩游戏!
小明喜欢出题!
题目描述
小明已经很久没有游戏玩了,但是小明又需要从游戏里找 idea,所以他只能回忆一下自己曾经玩过的一款游戏,叫做“云顶之弈“。
今天小明想把这个游戏简化成一个收集卡牌类的游戏,规则是这样的:
给你一个长度为 的牌的序列,第 张牌要么是
A,要么是a。小明可以做如下三种操作之一无数次:
(1)从序列中删除一张卡牌;
(2)选取三个连续的一级牌合成一张二级牌,或选取两个连续的二级牌合成一张三级牌。
具体地:三个
A可以合成一个B,两个B可以合成一个C,C就不能继续合成了,因为最高只有 级的牌。同理,三个
a可以合成一个b,两个b可以合成一个c,c以上不能继续合成。合成之后,之前的牌从序列里消失,合成后的牌出现在序列这个位置。
例如你一开始有
AAaAAAAaaaAa,你可以删除第一个a以及最后一个A,得到AAAAAAaaaa,然后合成Cab。
每一张卡牌都有一个价值,卡牌 ABCabc 的价值分别是 。
已知小明一开始有 个序列,每个序列初始从左到右有哪些卡牌是已知的。
你需要完成如下操作 次,每次操作可能是:
1 u c,在第个序列的末尾添加一张字符为 的卡牌,此处 是 a 或 A。
2 u,从第 个序列的末尾删除最后一张牌,如果 本来是空的,则无任何影响。
3 u v,把第 个序列合并到第 个序列的末尾,然后清空第 个序列。
4 u,查询如果拿第 个序列来玩游戏的话,操作的方案数与所有情况下的卡牌价值总和是多少。输出答案对 取模的结果。
我们称两个操作方案不同,当且仅当删除掉的牌编号不同,或存在一个 ,使得最后两个操作结果从左到右第 张牌种类不同。
输入格式
第一行输入 。
接下来 行,第 行首先输入 ,表示第 个序列的长度,然后输入一个长度为 的字符串,每个位置是 a 或者 A。
接下来 行,输入格式如上述格式。
输出格式
对于每个操作 ,输出一行两个数字表示答案。
输入输出样例
1 9 1 1 1 1 1 1
1 a
4 1
1 1 a
4 1
1 1 a
4 1
1 1 a
4 1
1 1 a
4 1
2 1
4 4
9 13
22 40
55 119
数据规模与约定
对于 的数据,满足 ,,。
| 测试点编号 | 特殊性质 | ||
|---|---|---|---|
| 没有操作 | |||
| 没有操作 | |||
| 无 | |||
0131A
- Status
- Done
- Rule
- IOI
- Problem
- 4
- Start at
- 2026-1-31 8:30
- End at
- 2026-1-31 11:36
- Duration
- 3.1 hour(s)
- Host
- Partic.
- 25