2023-1-9 #25 只剩一点变质尘土 供我当成全部抓住
——霾《微观戏剧》
135 P7881 [Ynoi2006] rmpq
操作分块,散块很好处理,每个整块提取出根号条横线与竖线将平面划分成 \(O(n)\) 个区域,询问枚举整块,直接二分定位到对应区域(这里可以不用分散层叠,因为常数很小,且不影响操作次数)。
因此关键的问题是怎么算出每个区域对应的 data,我们可以直接分治,合并区域的复杂度总和不超过区域总数。
更好的做法是二进制分组,这样可以顺便处理散块,而且散块复杂度变成了 \(\log\)。
136 loj#2406. 「THUPC 2017」母亲节的礼物 / Gift
憨憨题。
可以发现,一个不合法的点总能选择一个颜色使得这个点合法,我们直接用队列维护不合法点,每次选一个调整。
考虑势能:相邻同色边数量。初始势能至多 \(12m\),每次操作势能均减少,复杂度 \(O(m)\)。
137 CF853E Lada Malina
答案就是一个凸包的点权和,那么问题分为两部分:
- 得到凸包:先将 \(p\) 平移使得 \(w\) 非负,然后从 \(p\) 开始走一个下凸壳,再从 \(p\) 开始走一个上凸壳。
- 凸包点权和:多边形数点经典拆成梯形,由于斜率只有 \(O(k)\) 种,枚举斜率后就是个二维数点。
复杂度 \(O((n+q)k\log n)\)。
138 uoj#444. 【集训队作业2018】二分图
基本一样:CF212A Privatization。
Vizing 定理:记图 \(G\) 的边染色数为 \(\chi'(G)\),图 \(G\) 的最大度数为 \(\Delta(G)\),则若 \(G\) 为简单图,则有 \(\Delta(G)\leqslant \chi'(G)\leqslant \Delta(G)+1\)。
二分图上的结论:\(\chi'(G)=\Delta(G)\)。
证明,同时也是构造:
依次加边,记当前加入的边为 \((x,y)\),记 \(l_u\) 表示 \(u\) 邻边权值的 mex。
若 \(l_x=l_y\),显然可以直接加入,否则不妨设 \(l_x<l_y\)。
我们尝试将 \(y\) 相连的 \(l_x\) 色边改为 \(l_y\),再找到这个点相邻的 \(l_y\) 色边改为 \(l_x\),递归地找出一条类似增广路的东西,由于是二分图,正确性显然。
那么每次加入的边标的权值一定不超过 \(\Delta(G)\),取到下界。
回到这道题,答案下界就是度数不为 \(k\) 倍数的点数量。
我们将每个点拆成 \(\lfloor\frac{deg_x}{k}\rfloor\) 个度数为 \(k\) 的点和一个度数为 \(deg_x\bmod k\) 的点,求该图的一个边染色就好了。
总点数不超过 \(O(n^2)\),因此加边我们可以直接加入点并暴力找增广路,删边则较难处理。
若当前这条边不是连接的是当前这个点对应的散点,就从这个点对应的散点拆出一条边补上去,这样就好处理了。
复杂度 \(O(qn^2)\),常数很小。
139 loj#3126. 「COCI 2018.10」Teoretičar
还是二分图,于是还能用上面那个结论,我们只需构造一个色数不超过 \(2^{\lceil\log\Delta(G)\rceil}\) 的边染色。
考虑分治构造,我们每次将边集分成两半,使得每个点度数减半。
构造只需要把奇数度数点两两连边跑欧拉回路就好啦。
这样,度数为 \(d\) 的点会拆成 \(\lfloor\frac d2\rfloor\) 与 \(\lceil\frac d2\rceil\),复杂度 \(O(m\log n)\)。
140 uoj#455. 【UER #8】雪灾与外卖
模拟费用流经典题。
先考虑每个洞容量为 \(1\)。
从前到后扫描老鼠与洞,我们仅考虑用左边的老鼠/洞匹配右边的洞/老鼠。
141 P4480 [BJWC2018]餐巾计划问题
竟然不会做!很难绷得住。
填坑指路。