B. Kyu-Kurarin

    传统题 文件IO:sequence 1000ms 512MiB

Kyu-Kurarin

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

附加文件

题目描述

有一个长为 nn 的序列 aa,初始 aia_i 都是 00,以及一个操作序列 (x1,y1),,(xc,yc)(x_1,y_1),\cdots,(x_c,y_c),具体地,一个操作 (x,y)(x,y) 代表把 axa_x 修改为 yy。保证 1xin,1yim1\le x_i\le n,1\le y_i\le m,这里 mm 是给定的常数。

定义一个操作序列合法,当且仅当经过这个操作序列之后,aa 满足:

  • 所有 aia_i 均不为 00
  • 序列 aa 中的不同元素个数需要 k\ge k,其中 kk 是给定的正整数。

现在你可以从你的操作序列 (x1,y1),,(xc,yc)(x_1,y_1),\cdots,(x_c,y_c)忽略若干个操作,然后把剩下的操作分成尽可能多的子序列,使得每个子序列都是合法的操作序列。请你求出最多能分出多少个子序列,并构造一种方案。

具体地,你需要输出 cc 个正整数 id1,,idc\text{id}_1,\cdots,\text{id}_c 表示每个操作被分到了哪个子序列中,还是删除了。如果 idi=0\text{id}_i=0,代表你忽略了这次操作,否则代表你把这次操作分到了第 ii 个子序列内。你需要保证每个分出的子操作序列都是合法的。

输入格式

第一行四个正整数 n,m,c,kn,m,c,k

接下来 cc 行,每行两个正整数 x,yx,y 表示操作序列中的一个操作。

输出格式

第一行输出一个正整数 dd 表示最多能分出多少个子序列。

接下来一行 cc 个正整数 id1,,idc\text{id}_1,\cdots,\text{id}_c 表示每个操作被分到了哪个子序列中,还是删除了。具体地,你需要保证 0idid0\le \text{id}_i\le d,如果 idi=0\text{id}_i=0,代表你忽略了这次操作,否则代表你把这次操作分到了第 ii 个子序列内。你需要保证每个分出的子操作序列都是合法的。

如有非唯一解,输出任意一种均可。

样例 11 输入

3 3 10 2
3 1
3 3
3 2
2 3
2 2
2 2
3 3
2 1
1 3
1 3

样例 11 输出

2
0 0 2 0 1 2 1 0 1 2

样例 11 解释

第一个分出来的操作序列是 (2,2),(3,3),(1,3)(2,2),(3,3),(1,3),第二个则是 (3,2),(2,2),(1,3)(3,2),(2,2),(1,3),都是合法的

样例 22 输入

3 4 5 1
1 1
1 1
1 1
1 1
1 1

样例 22 输出

0
0 0 0 0 0

样例 393 \sim 9

见下发文件,这些样例依次满足子任务 1,2,3,4,5,6,71,2,3,4,5,6,7 的约束。

测试点约束

对于所有数据,$1\le n,m\le 1000,1\le c\le 5000,1\le k\le \min(n,m)$。

子任务编号 特殊性质 分值
1 n,m5,c12n,m\le 5,c\le 12 8
2 n,m,c15n,m,c\le 15 16
3 n,m,c50n,m,c\le 50 8
4 n,m,c100n,m,c\le 100
5 n,m100n,m\le 100 24
6 k=nk=n 16
7 20

云斗学院 2026 省选计划系列模拟赛 #1

未参加
状态
已结束
规则
OI
题目
3
开始于
2025-12-19 0:00
结束于
2025-12-21 20:00
持续时间
4.5 小时
主持人
参赛人数
116