#P17830. [CSP-J 2026] 纸牌游戏 / card(民间数据)
[CSP-J 2026] 纸牌游戏 / card(民间数据)
题目描述
小 Z 正在玩一种单人纸牌游戏。
他有一叠特制的纸牌,共有 张,从上到下的点数依次为 。每张牌的点数都是 到 之间的整数,且每种点数都出现至少一次。
小 Z 将进行 局相互独立的游戏。每局开始前,他会将所有牌按原顺序放回牌堆,并清空桌面。在第 ()局中,他跳过前 张牌,依次打出第 张到第 张牌,这些牌的点数依次为 。
桌面上的牌始终从左到右排成一行。打出一张点数为 的牌时:
- 若桌面上没有点数为 的牌,就将这张牌放在最右端;
- 否则,收走桌面上点数为 的牌及其右侧的所有牌,再把这张牌放在最右端。被收走的牌在本局中不再使用。
由上述规则可知,任意时刻桌面上同一种点数的牌至多只有一张。
最后一张牌打出后,本局游戏结束。
例如,若桌面上从左到右的牌的点数依次为 ,则打出一张点数为 的牌后,桌面上从左到右的牌的点数依次为 。接着打出一张点数为 的牌时,桌面上原来点数为 的牌及其右侧的所有牌(点数依次为 )被收走,再把新打出的 放在最右端,此时桌面上从左到右的牌的点数依次为 。
你需要帮助小 Z 依次求出,对于每个 ,在所有 局游戏中,有多少局结束时桌面上留有点数为 的牌。
输入格式
从文件 card.in 中读入数据。
输入的第一行包含两个正整数 ,分别表示牌的数量和点数种类数。
输入的第二行包含 个正整数 ,依次表示小 Z 的牌从上到下的点数。
输出格式
输出到文件 card.out 中。
输出一行 个非负整数,其中第 ()个整数表示在所有 局游戏中,有多少局结束时桌面上留有点数为 的牌。
输入输出样例 #1
输入 #1
4 3
1 2 1 3
输出 #1
3 1 4
输入输出样例 #2
输入 #2
10 3
3 1 2 1 3 2 3 1 2 1
输出 #2
10 3 3
说明/提示
样例 1 解释
对于第 局游戏,小 Z 依次打出点数为 的牌:
- 打出第 张牌(点数为 )后,桌面上只有一张点数为 的牌;
- 打出第 张牌(点数为 )后,桌面上从左到右的牌的点数依次为 ;
- 打出第 张牌(点数为 )后,先收走桌面上点数为 的两张牌,再放上新打出的 ,桌面上只有一张点数为 的牌;
- 打出第 张牌(点数为 )后,桌面上从左到右的牌的点数依次为 。
因此第 局游戏结束时,桌面上从左到右的牌的点数依次为 。
对于第 局游戏,小 Z 依次打出点数为 的牌,结束时桌面上从左到右的牌的点数依次为 。
对于第 局游戏,小 Z 依次打出点数为 的牌,结束时桌面上从左到右的牌的点数依次为 。
对于第 局游戏,小 Z 仅打出一张点数为 的牌,结束时桌面上只有一张点数为 的牌。
因此,在全部 局游戏中:
- 有 局游戏结束时,桌面上留有点数为 的牌,即第 局;
- 有 局游戏结束时,桌面上留有点数为 的牌,即第 局;
- 有 局游戏结束时,桌面上留有点数为 的牌,即全部 局。
样例 3
见题目目录下的 card/3.in 与 card/3.ans。
该样例满足测试点 的约束条件。
样例 4
见题目目录下的 card/4.in 与 card/4.ans。
该样例满足测试点 的约束条件。
样例 5
见题目目录下的 card/5.in 与 card/5.ans。
该样例满足测试点 的约束条件。
样例 6
见题目目录下的 card/6.in 与 card/6.ans。
该样例满足测试点 的约束条件。
数据范围
对于所有测试数据,均有:
- ,;
- 对于所有 (),均有 ;
- 每种点数都出现至少一次,即对于所有 (),均存在 ()满足 。
::cute-table{tuack}
| 测试点编号 | 特殊性质 | ||
|---|---|---|---|
| 无 | |||
| A | |||
| 无 | |||
| B | |||
| 无 | |||
| A | |||
| 无 | |||
特殊性质 A:。
特殊性质 B:至多存在 个 ()满足 。