粉兔 AKIOI (详细揭秘)
粉兔做不完作业是怎么回事呢,小编也很好奇,但事实就是这样
粉兔 AKIOI 是假的
A (WF 2014) : A B C E F G H I J K L
B (WF 2015) : B E G H J K L M
C (WF 2016) : A B D F H I J K M
D (WF 2017) : A B D G H J K L
E (WF 2018) : C D E G H I J
F (WF 2019) : B C F G I J K
G (NEERC 2017) : F G H I J K L
H (NEERC 2016) : B C D G I K L M
I (NEERC 2015) : B C D H I J K L
J (NEERC 2014) : C D E G H I
K (NEERC 2013) : A C D E G H I K
L (CERC 2017) : B C D E I K L
M (CERC 2016) : B D E G I J L
N (CERC 2015) : C E F G I J L
O (CERC 2014) : A B E G J K L
P (CERC 2013) : A D E G H J
Q (NEERC,NSub 2017) : C D E F G H J
R (NEERC,NSub 2016) : B D E G H I J
S (NEERC,NSub 2015) : D F G I K
T (NEERC,NSub 2014) : C E F H K
U (NEERC,NSub 2013) : C H I J L
表格
试题一 | 完成情况 | 试题二 | 完成情况 | 试题三 | 完成情况 |
---|---|---|---|---|---|
UC | DG | RB | |||
HC | IB | FJ | |||
GK | UH | QH | |||
EE | DJ | IH | |||
HL | MI | EJ | |||
MB | UI | ED | |||
AA | BG | ML | |||
CF | TE | QG | |||
PH | UJ | BB | |||
CI | SD | NG | |||
DK | LD | IJ | |||
NC | BJ | ✔ | FK | ||
CH | NJ | RH | |||
QF | BE | KI | |||
AC | PG | HM | |||
PJ | ID | EG | |||
SI | KC | GI | |||
OG | CK | DB | |||
QE | ✔ | GH | NI | ||
OL | ✔ | KA | MG | ||
SG | NL | KH | |||
QJ | KG | AB | |||
KD | IL | NF | |||
CM | NE | HD | |||
DH | EC | BM | |||
LC | CD | JI | |||
DL | ME | PE | |||
LI | ✔ | AI | RJ | ||
SF | II | HG | |||
RE | LL | OA | |||
FB | ✔ | QD | DA | ||
TC | AE | CB | |||
GF | AG | JC | |||
PA | TH | EH | |||
AJ | TK | EI | |||
UL | AF | SK | |||
BH | RD | OK | |||
FC | JD | OE | |||
TF | FF | DD | |||
CJ | HK | MJ | |||
FG | ✔ | GL | AL | ||
FI | IC | QC | |||
MD | OJ | HI | |||
KK | JH | OB | |||
BK | GJ | KE | |||
CA | IK | ✔ | LE | ||
RI | LK | PD | |||
JE | LB | HB | |||
BL | RG | AH | |||
AK | ✔ | GG | ✔ | JG |
绿的表示主要没看题解,红的表示主要看了题解。
FB. Beautiful Bridges
本题是在获得集训队训练资料前就已经做过的,故写在开头。
详细题解请见:ICPC World Finals 2019 题解,评测链接。
FG. First of Her Name
本题是在获得集训队训练资料前就已经做过的,故写在开头。
详细题解请见:ICPC World Finals 2019 题解,评测链接。
2020-10-13
AK. Surveillance
题意简述
有一个周长为 (n) 的圆,等距分割为 (n) 小段,按顺序编号为 (1 sim n)。
给定 (k) 个圆上的弧,每个覆盖一段连续的小段 ([a_i, b_i]),问最少选取其中多少个弧可以覆盖整个圆,或报告不可能完成。
数据范围:(3 le n le {10}^6),(1 le k le {10}^6)。
〔「SCOI2015」国旗计划〕弱化版。
判断可行性很简单。
对于求出最小选取的弧的数量,考虑倍增,对于每个小段,求从此处出发使用 (2^j) 个区间最多能向前遍历多长的距离。
时间复杂度为 (mathcal O (k + n log n)),评测链接。
2020-10-16
OL. Outer space invaders
题意简述
有 (n) 个物体,第 (i) 个物体在时刻 (a_i) 出现,在时刻 (b_i) 消失,权值为 (d_i)。
在某个时刻,你可以用 (R) 的代价消灭所有权值 (d_i le R) 的,且此时已经出现但还未消失的物体。
问消灭所有物体的最小代价之和,物体消失了不算被消灭。
数据范围:(1 le n le 300),(1 le a_i < b_i le {10}^4),(1 le d_i le {10}^4)。
一开始容易想出一个贪心的做法,看到 (n) 这么小有点怀疑,果然贪心错了。
我们先离散化时间,把 (a_i, b_i) 的值域降至 (mathcal O (n))。
我们考虑 (R) 最大的那次操作,一定是把 (d_i) 最大的物体消灭了,所以也肯定同时消灭了同时存在的其它物体。
所以我们在 (d_i) 最大的物体的 ([a_i, b_i]) 中枚举一个执行这次消灭的位置,然后分成左右两个子问题。
子问题中仅包含出现时间段完全落在子问题区间中的物体,因为其它都肯定被消灭了。
所以变成了个区间 DP。
时间复杂度为 (mathcal O (n^3)),评测链接。
P.S. 有点像〔USACO 2019.12 Platinum T1. Greedy Pie Eaters〕,LOJ #3226,看起来不是个区间 DP 但是确实是?
GG. The Great Wall
题意简述
给定长度为 (n) 的三个数列 (a, b, c)(下标范围为 (1 sim n)),一个整数 (r)(满足 (1 le r < n)),和一个正整数 (k)。
可以选取两个下标 (x, y) 满足 (r le x < y le n)。
考虑两个长度为 (r) 的下标区间 ([x - r + 1, x]) 和 ([y - r + 1, y]),并据此定义数列 (h):
- 如果下标 (i) 不属于这两个区间,则 (h_i = a_i)。
- 如果下标 (i) 恰好属于一个区间,则 (h_i = b_i)。
- 如果下标 (i) 属于全部两个区间,则 (h_i = c_i)。
最后,定义价值为 (displaystyle sum_{i = 1}^{n} h_i)。
所有的 (x, y) 的选取方案有 (frac{(n - r) (n - r + 1)}{2}) 种,求其中价值第 (k) 小的方案的价值。
数据范围:(2 le n le 3 imes {10}^4),(1 le k le frac{(n - r) (n - r + 1)}{2}),(1 le a_i < b_i < c_i le {10}^6)。
类似于〔「NOI2010」超级钢琴〕。
令 (c_i) 减去 (a_i + b_i),再令 (b_i) 减去 (a_i),令 (displaystyle mathrm{Sum} = sum_{i = 1}^{n} a_i)。
再令 (displaystyle {mathrm{S}b}_k = sum_{i = 1}^{k} b_i) 和 (displaystyle {mathrm{S}c}_k = sum_{i = 1}^{k} c_i),即 (b, c) 的前缀和数列。
考虑如果 ([x - r + 1, x]) 和 ([y - r + 1, y]) 有交或刚好有触碰,即 (x < y le x + r):
- 则价值为 (mathrm{Sum} + {mathrm{S}b}_y - {mathrm{S}b}_{x - r} + {mathrm{S}c}_x - {mathrm{S}c}_{y - r})。
变换一下变成 (mathrm{Sum} + ({mathrm{S}c}_x - {mathrm{S}b}_{x - r}) + ({mathrm{S}b}_y - {mathrm{S}c}_{y - r}))。
考虑如果 ([x - r + 1, x]) 和 ([y - r + 1, y]) 无交且不刚好触碰,即 (x + r < y):
- 则价值为 (mathrm{Sum} + ({mathrm{S}b}_x - {mathrm{S}b}_{x - r}) + ({mathrm{S}b}_y - {mathrm{S}b}_{y - r}))。
我们考虑二分答案 (mathrm{Sum} + mathrm{mid}),统计价值小于等于 (mathrm{Sum} + mathrm{mid}) 的 ((x, y)) 数对的数量。
对上述两种情况分别统计,我们固定 (x),统计符合条件的 (y) 的数量。
对于每个 (x),合法的 (y) 是一个区间,且对于 (x) 的连续变化,区间的变化量是 (mathcal O (1))。
而且我们是需要在值域上求一维偏序,所以考虑以值域维度建数据结构。
可以发现主席树符合我们的要求,对两种情况分别建立对应的主席树,然后对于固定的 (x) 查询值域前缀上的 (y) 数量即可。
时间复杂度为 (mathcal O (n log^2 (n v))),其中 (v) 为值域,评测链接。
P.S. 可以发现,此处没有必要使用主席树的,每次对二分的答案进行计算的时候扫描线即可,但是如果不做值域离散化的话,这种方法在时间和空间复杂度或常数上均没有显著改进,所以此处使用了主席树。
QE. Equal Numbers
题意简述
有 (n) 个数 (a_1, a_2, ldots , a_n)。你可以对它们执行操作:选取任意一个数 (a_i),把它乘以任意正整数 (x),即 (a_i gets a_i cdot x)。
请你对所有 (k)(满足 (0 le k le n))求出:执行 (k) 次操作后,这些数中不同的数值个数的最小值。
数据范围:(1 le n le 3 imes {10}^5),(1 le a_i le {10}^6)。
在所有质因数维度分解后,这实际上是一个无限维偏序空间,可以把一个点移到大于它的位置上。
在这个空间中,初始有一些位置本来就有点了,还有一些位置初始时是空的。
在 (k) 一定时,显然不会对一个点操作多次(除非取 (x = 1) 进行操作)。
所以我们假定一个点一定只会操作最多一次,不允许 (x = 1) 的操作,把条件改成进行 (le k) 次操作即可。
也就是有一个大小不超过 (k) 的点集会进行操作,其它的点都在原地不动,我们可以给出几个基本结论:
- 初始时位置相同的点,如果其中一个被操作了,它们全体一定会一起被操作,且操作的 (x) 均相同。这是因为如果其中有不被操作的点,则全体都不被操作不会使答案更劣,如果全体都被操作了,令它们的操作的 (x) 相同,也不会使答案更劣。
- 位置相同的一群点,被操作后有可能落到了初始时本来就有点的位置上,也可能落到初始时是空的位置上。
- 如果有一群这样的点落到了初始时是空的位置上,则令它落到的位置变为一个无穷远点(各维度坐标足够大以保证在题目范围内的所有数值都能转移到它,比如 (operatorname{lcm}(1, 2, ldots , {10}^6)),是所有范围内的数的倍数),而且令所有被操作的点都落到同样的这个无穷远点上,不会使答案更劣。
- 否则,所有被操作的点都落到了初始时就有点的位置上,而这个位置上原有的点一定不会被操作。这是因为如果它们被操作了,移动到其它点上去了,则之前的那个点也是可以移动到这个新位置上的,如果新位置上原有的点仍然被操作了,我们继续去找新的新位置,直至最终找到一个原有的点没有被操作的位置,把之前访问到的所有点集都移动到这个位置即可。上面的过程能够成立主要依靠:第一点是,转移关系是偏序,所以具有传递性;第二点是,点的数量是有限的,所以这个过程可以在有限步内结束。
也就是说,初始时 (a_i) 在数值上相同的一群 (i),它们的行动是统一的,而且之后只有两种情况:
- 所有被操作的点都跑到了同一个无穷远的位置上,且这个位置在初始时肯定是没有点的。假设有 (c) 个初始时数值不相同的点集被操作了,则此时答案就比 (k = 0)(即初始状态)时减少 ((c - 1)),因为原来的 (c) 个位置上的点消失了,增加了一个无穷远位置上的点。
- 每个被操作的初始时数值不相同的点集,都移动到了一个初始时就有点的位置上,且这个位置上原有的点是不会被操作的。假设有 (c) 个初始时数值不相同的点集被操作了,则此时答案就比 (k = 0)(即初始状态)时减少 (c)。注意这个情况和第一种情况相比,有的初始点集是无法被操作的,也即那些无法转移到其它初始时就有点的位置上的点集,换句话说就是这个偏序关系上的「最大值」,在原问题中体现为数集 (a) 中没有它的倍数的那些数。
我们对这两种情况分别处理即可。可以开一个桶然后做一个倍数的统计,然后确定出能参与第二种情况的点集。之后再对两种情况中的可操作点集按照大小从小到大排序,分别维护两种情况的答案数组。最终输出时输出两个数组中对应位置的较小值即可。
时间复杂度为 (mathcal O (n log n + v log v)),其中 (v) 是值域,评测链接。
BJ. Tile Cutting
题意简述
如果有一个长为 (x) 宽为 (y) 的矩形,其中 (x, y) 是整数,你可以选择两个整数 (a, b) 满足 (1 le a < x) 和 (1 le b < y)。
然后在矩形长为 (x) 的边的左起 (a) 个单位长度,宽为 (y) 的边的左起 (b) 个单位长度处标记点,对四条边均是如此。
同时你需要保证这四个点是关于矩形的正中心,中心对称的。顺次连接四个点可以得到一个平行四边形。
记这个平行四边形的面积为 (w)。我们定义 (f(w)) 为能够得到面积为 (x) 的平行四边形的有序数对 ((x, y, a, b)) 的数量。
有 (Q) 次询问,每次询问给出 (l, r),你需要求出 (f(w))((l le w le r))的最大值,以及取到这个值的 (w) 的值,有多个 (w) 取最小的。
数据范围:(1 le Q le 500),(1 le l le r le 5 imes {10}^5)。
令 (c = x - a) 和 (d = y - b),此时 (w = (a + c) (b + d) - a d - b c = a b + c d)。其中 (a, b, c, d) 都是正整数。
也就是说令 (f(w)) 的 (mathbf{OGF}) 为 (F),则我们有 (F = G^2),其中 (G) 为 (sigma_0 (w))(因数个数函数)的 (mathbf{OGF})。
我们只需筛出因数个数函数,然后 NTT 做卷积,然后建立 ST 表进行 RMQ 的查询即可。
时间复杂度为 (mathcal O (v log v + Q)),其中 (v) 为值域即 (max r),评测链接。
2020-10-20
LI. Intrinsic Interval
题意简述
给定一个 (1 sim n) 的排列 ([pi_1, pi_2, ldots , pi_n])。再给出 (m) 个询问,第 (i) 个询问给出 (a_i, b_i),你需要求出包含区间 ([a_i, b_i]) 的最小连续段。
数据范围:(1 le n, m le {10}^5)。
析合树可做,但我不会。
我们考虑用线段树求连续段的方法,有两种方法:一种是扫描线维护两个单调栈;另一种是在值域上扫描,固定值域区间右端点,维护每个值域区间左端点对应形成的段数,在每个段的最左侧统计就是维护相邻两个位置,左边在值域区间外而右边在值域区间内的位置个数。
我喜欢用后者,因为两个单调栈很不好玩。
但是在值域上做扫描线真的可以去求下标区间上的相关问题吗?
没关系,只要先把排列 (pi) 变成它的逆就行了,也就是说我们对 (pi^{-1}) 执行上述算法,并且把 ([a_i, b_i]) 看成在值域上的区间。
我们注意到关于连续段的一个性质,也就是如果两个连续段相交但不相包含,则它们的交也是一个连续段。
通过这个性质可知,答案是唯一的,而且假设答案为 ([l, r]),我们还有 (r) 是所有包含 ([a_i, b_i]) 的连续段中最靠左的右端点。
我们提前把区间 ([a_i, b_i]) 挂在它的右端点 (b_i) 处。在扫描线的时候扫到 (b_i) 后,就把 (a_i) 加进一个大根堆中。
尝试回答询问时,我们按 (a_i) 从大到小从大根堆中取出元素,然后在线段树上查值域区间左端点在 ([1, a_i]) 之间时是否存在连续段,如果存在,返回左端点最靠右的一个。此时如果返回的是存在,则该询问 (i) 的答案就是 ([l, r]),其中 (l) 为返回值,(r) 为当前扫描线扫到的右端点位置。这种方法最终表现常数较小,可能是因为线段树的访问次数较少。
时间复杂度为 (mathcal O (n log n + m log m)),评测链接。
2020-10-21
IK. King’s Inspection
题意简述
给定一张有 (n) 个点,(m) 条有向边的有向图,问是否存在哈密顿圈。如果有,输出一种方案。
数据范围:(1 le n le {10}^5),(0 le m le n + 20)。
这题就非常搞笑了,注意到一个哈密顿圈已经有 (n) 条边了,最多多出 (20) 条。
我们先判断是不是每个点都有出度,如果是的话,出度 (ge 2) 的点就只有最多 (20) 个了。
我们先对出度 (= 1) 的点进行一个缩点,以降低后面的复杂度。
然后对那最多 (20) 个点进行枚举出边的 DFS,不难证明这部分最多 (2^{20}) 种情况。
枚举完之后的 check 因为已经缩点过了,所以只要 (mathcal O (m - n)) 次运算就能判断。
时间复杂度为 (mathcal O (n + (m - n) 2^{m - n})),评测链接。