Examples

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]餐巾计划问题

竟然不会做!很难绷得住。

填坑指路

posted @ 2023-01-08 15:31  xiaoziyao  阅读(101)  评论(0编辑  收藏  举报