2021WC 听课记录

总结:自闭了。

0201

上午在讲简单东西,跳了。

下午的一些题目:

GYM102832J

(from 2020 China Collegiate Programming Contest Changchun Onsite)

注意到方案合法仅当 $[x-r,x+r]$ 这些区间互相之间只有严格包含和相离关系,且没有完全相同的线段。
考虑从左到右维护扫描线,记录前 $10$ 个端点哪一些是合法的。
插入一条 $[x, y]$ 的线段会使得 $[x + 1, y − 1]$ 非法,打标记即可。
时间复杂度 $O(n\times 2^{10})$。

GYM102822I

(from 2020 China Collegiate Programming Contest Mianyang Onsite) 这题见过。

$n$ 棵树高度为 $\langle h\rangle$,可以任意买可使一棵树长高 $i$、单价 $i^2+C$ ($C$ 为常数)的肥料,求每棵树都长到不低于 $k$ 的最小花费。$n,q\le 10^5,c\le 10^4,h_i,k\le 10^9$ 且 $h,k$ 随机生成。

考虑若我们要将某棵树高度提升 $h$。假设我们操作了 $k$ 次,显然会有 $h \bmod k$ 次 $\lfloor\frac{h}{k}\rfloor$ 和 $k-h\bmod k$ 次 $\lfloor\frac{h}{k}\rfloor$。

所以直接令 $f(h)$ 为升高 $h$ 最优(且最大)的操作次数,不难发现 $h>O(C)$ 时有约为 $O(\sqrt{C})$ 的周期,所以小暴力,大按剩余类做扫描线即可。而又因为数据随机,问到小的概率很小,所以复杂度没问题。

GYM102798F

(from 2020 China Collegiate Programming Contest Weihai Onsite)

GYM102769L

(from 2020 China Collegiate Programming Contest Qinhuangdao Onsite)

虽然我知道这是什么但是不会描述所以直接抄课件了(

平面上有 $n$ 组石柱,第 $i$ 组包含了坐标为 $(i,l_i),(i,r_i)$ 的石柱,除此之外没有石柱。
每一年,如果一个石柱旁边四格中存在一个空格子,则在当年结束时,其会崩塌,形成一个空格子。
问每一组石柱哪一年会全部崩塌。$\sum n\le 1.2\times 10^7,1\le l_i,r_i\le 5\times 10^8$。

考虑一个石柱 $(x,y)$ 与一个空格子 $(x’,y’)$,则该石柱显然会在 $|x-x’|+|y-y’|$ 年内崩塌。
于是设第 $i$ 组的答案为 $ans_i$,则显然有 $ans_i−1\le ans_i+1\le ans_i+1$。因而 $i−ans_i,i+ans_i$, 也就是极大合法的左右端点均单调增。

不妨设 $(i,l_i−1),(i,r_i+1)$ 为上下关键点,考虑用单调栈分别维护左右侧的上下关键点的四个单调队列。队列维护的是 $x,y$ 两轴的坐标的和差,用于计算当前石柱没有崩塌的区间的上下边界。

我们同时维护队列左右两侧 $4$ 个方向的单调队列,同时记录当前极大合法区间左右端点 $L,R$。从 $i−1$ 转移到 $i$ 的时候,右端点最多向右移动 $2$,因而这些零散的部分可以通过暴力询问求得。

每一次中点的移动,合法区间左右端点的移动,相当于从若干个队列中删去起始元素,加入末尾元素。检验合法性等价于求最小值,因而直接维护 $4$ 个单调队列即可。
时间复杂度 $O(n)$。

NC9925H

(from 2020 ICPC,Shanghai Regional Contest) 这题见过。

一个圆形餐桌,有 $n$ 个位置,现有 $k$ 个人分别在 $a_i$,$k$ 碗饭分别在 $b_i$。每个时刻你可以顺时针或逆时针将桌子转一个位置,如果一碗饭转到了一个人面前,他可以不花时间取走饭,每个人恰好会取走一碗饭。
大家都想最小化最后拿到饭的人的时间,求出这个时间。$n\le 10^9,k\le 2000$。

有一个结论是:我们把每个人和对应的饭在圆盘上连线,那么这些连线是不会相交的。
这样我们可以直接枚举第一个人对应的饭编号,然后转一圈计算答案。复杂度 $O(n^2\log n)$。

证明略。

NC9925K

(from 2020 ICPC,Shanghai Regional Contest) 这题见过。

$n$ 个点 $m$ 条边无向简单图,每个点有颜色0/1,保证点 $1$ 初始颜色为0。每当你离开一个点,该点颜色会改变。
你希望经过节点颜色依次为010101...,判断是否存在这样的路径,$n,m\le 2\times 10^5$。

考虑第一个在路径中出现两次的点 $x$,和第二次 $x$ 出现前上一个点 $y$,显然初始 $x,y$ 同色,而路径 $1\to x\to y$ 每条边均为异色边。

把异色边提出来,求出点双,求出圆方树 $T$,则存在 $1\to x\to y$ 的不经过重复节点的路径仅当「$y$ 在 $x$ 子树内」或「$x$ 父节点为方点,且 $y$ 在 $x$ 父亲的子树内」。

总时间复杂度 $O(n)$。

NC9328H

(from 2020 XiaoMi Invitational Programming contest) 见过不会。

给定一个 $n$ 层的满二叉树,所有叶子节点有固定权值 $v_i$。自行确定其他节点的权值最小化 $\sum(v_i-v_{fa(i)})^2$ 并输出最小值 $\bmod 998244353$。$Q$ 次单点修改,$n\le 18,Q\le 2\times 10^5$。

设 $f_x(t)$ 为 $v_x=t$、其子树内节点权值任意,其子树贡献最小值。不难发现 $f_x(t)$ 为一个二次函数。

因此直接对于树上每个节点维护多项式对应系数即可。注意到二次项系数仅与树结构相关,因此可省去修改时求逆部分。时间复杂度 $O((n+m)(\log n + \log mod))$。


援交完全在睡大觉,也许以后(指退役以后)会补吧。

0202

上午讲的smjb。

下午的一些没做过的题目:

咕咕咕。



援交比我更早咕掉了!

0203

0204

显而易见,咕了。