SZTG-NOIP-U1410. Maximize Mex

提交0 通过1
通过率0%
时间限制2000ms
内存限制256MiB

题目描述

题目描述

某学院有 n n 名学生和 m m 个社团。社团编号为从 1 1 到 m m 。每名学生都有一个潜力值 pi p_i ,并且是编号为 ci c_i 的社团的成员。初始时,每名学生恰好属于一个社团。学院举办了一场科技节,接下来的 d d 天都会持续进行。在科技节期间,每天都会有一场编程比赛。

每天早上,学院中恰好有一名学生会离开其社团。一旦某名学生离开了社团,他之后就再也不会加入任何社团。每天下午,学院院长会从每个社团中选出一名学生(如果某个社团没有成员,则该社团无人被选出),组成当天编程比赛的队伍。队伍的强度定义为队伍中学生潜力值的 mex。院长想知道接下来 d d 天中,每天队伍可能达到的最大强度。因此,每天院长都会选择使队伍强度最大化的队伍。

多重集合 S S 的 mex 是不在 S S 中出现的最小非负整数。例如,{0,1,1,2,4,5,9} \{0, 1, 1, 2, 4, 5, 9\} 的 mex 是 3 3 ,{1,2,3} \{1, 2, 3\} 的 mex 是 0 0 ,而 ∅ \varnothing (空集)的 mex 是 0 0 。

输入格式

第一行包含两个整数 n n 和 m m ( 1≤m≤n≤5000 1 \leq m \leq n \leq 5000 ),表示学院中的学生数量和社团数量。

第二行包含 n n 个整数 p1,p2,…,pn p_1, p_2, \ldots, p_n ( 0≤pi<5000 0 \leq p_i < 5000 ),其中 pi p_i 表示第 i i 名学生的潜力值。

第三行包含 n n 个整数 c1,c2,…,cn c_1, c_2, \ldots, c_n ( 1≤ci≤m 1 \leq c_i \leq m ),表示第 i i 名学生初始时是编号为 ci c_i 的社团的成员。

第四行包含一个整数 d d ( 1≤d≤n 1 \leq d \leq n ),表示院长想知道队伍最大可能强度的天数。

接下来的 d d 行中,每行包含一个整数 ki k_i ( 1≤ki≤n 1 \leq k_i \leq n ),表示第 i i 天第 ki k_i 名学生离开了其社团。保证第 ki k_i 名学生此前没有离开过其社团。

输出格式

对于 d d 天中的每一天,输出当天队伍的最大可能强度。

5 3
0 1 2 2 0
1 2 2 3 2
5
3
2
4
5
1
3
1
1
1
0
5 3
0 1 2 2 1
1 3 2 3 2
5
4
2
3
5
1
3
2
2
1
0
5 5
0 1 2 4 5
1 2 3 4 5
4
2
3
5
4
1
1
1
1

提示

考虑第一个样例:

第一天,学生 3 3 离开了其社团。此时,剩下的学生为 1 1 、2 2 、4 4 和 5 5 。我们可以选择学生 1 1 、2 2 和 4 4 ,得到最大可能强度 3 3 。注意,我们不能选择学生 1 1 、2 2 和 5 5 ,因为学生 2 2 和 5 5 属于同一个社团。此外,我们也不能选择学生 1 1 、3 3 和 4 4 ,因为学生 3 3 已经离开了其社团。

第二天,学生 2 2 离开了其社团。此时,剩下的学生为 1 1 、4 4 和 5 5 。我们可以选择学生 1 1 、4 4 和 5 5 ,得到最大可能强度 1 1 。

第三天,剩下的学生为 1 1 和 5 5 。我们可以选择学生 1 1 和 5 5 ,得到最大可能强度 1 1 。

第四天,剩下的学生只有 1 1 。我们可以选择学生 1 1 ,得到最大可能强度 1 1 。

第五天,没有任何社团还有学生,因此最大可能强度为 0 0 。