一些题(十四)

[JOI 2022 Final] Sandcastle 2

考虑如何让判定一个矩形合法,将每个格子向它四周比它小的最大的格子连一条边,那么合法相当于这个图存在一条哈密顿路径。由于每个点出度至多为 \(1\),于是也相当于入度为 \(0\) 的点只有一个。于是可以矩形分治,每次沿长宽中较小的一维切开,计算跨过切痕的合法矩形数。在切痕上枚举矩形的两个边界,然后矩形的另外两个边界分别往外扩展,容易统计入度为 \(0\) 的点的个数,然后可以 \(O(1)\) 合并两边的结果。时间复杂度 \(O((nm)^{1.5})\)

[CF1500F] Cupboards Jumps

假如当前填完了 \(h\) 的前 \(i+2\) 项且满足了 \(w_{0\ldots i}\) 的限制,发现只用记录 \(|h_{i+1}-h_{i+2}|\) 能取到的值就可以往下递推了。考虑转移,发现每次合法的只是一个连续段和一些点,转移可能会绕着某个位置对称,维护一些标记就好了。

https://codeforces.com/contest/1500/submission/149635617

[HNOI2009] 积木游戏

直接模拟整个过程,对每个块成为一个空洞的上/左/右边分别讨论。对于前者可以之间线段树维护区间最大值和最大值段数,而后两者可以对每一列用 set 维护竖直上空的连续段。然后注意一堆细节就好。

https://www.luogu.com.cn/record/71391559

[CodeChef] MAXDTREE

考虑高位往低位填,假设当前填到第 \(i(i>1)\) 位,此时个位上的数为 \(x\),而第 \(2\)\(i-1\) 位上的数全是 \(0\),那么仅使第 \(i\) 位数加一时个位的变化只与大于等于 \(i\) 位的位上值的最大值有关。于是可以把这个最大值记到状态里,然后容易 dp 预处理求出每种情况的个位变化。预处理一堆东西后,最后计数时可以按照 dfn 序进行 dp 套 dp,记录当前填的位数、个位的值、前面填过的最大值即可转移。

[CF765F] Souvenirs

将询问离线,然后从左至右扫描线,扫到 \(i\) 时对所有 \(j\in [1,j-1]\) 求出 \(\min_{j<k\le i} |a_j-a_k|\)。考虑加入 \(i\) 时需要更新哪些 \(j\),先考虑 \(a_j>a_i\) 的部分,另一部分同理。那么首先要更新的是 \(i\) 左边第一个满足 \(a_j>a_i\)\(j\),然后是更左边第一个满足 \(a_{j'}>a_i\land |a_i-a_{j'}|<|a_j-a_{j'}|\)\(j'\),以此类推。发现这个不等式等价于 \(a_{j'}<(a_j-a_i)/2\),也就是说每次 \(j'\) 的值域至少减半,那么这个过程至多会进行 \(O(\log A)\) 次。于是找 \(j'\) 用权值线段树,更新后缀 \(\min\) 用树状数组即可做到 \(O((n+q)\log n\log A)\)

[CF1205D] Almost All

先考虑如何填边权使得从根出发的 \(n-1\) 条路径权值分别为 \(1,\ldots,n-1\)。发现只用给每条边填它连接的两点 dfs 序之差即可。然后考虑把根的儿子的子树分成大小为 \(p,q\) 的两部分,每部分分别按如上方法填,再给第二部分的边权乘 \(p\),这样就能分别找到经过根的长为 \(1,\ldots,(p+1)(q+1)-1\) 的路径。而取重心为根,将儿子按子树大小降序贪心取即可使 \(\min(p,q)\ge (n-1)/3\),此时 \((p+1)(q+1)-1\ge 2n^2/9\)

[UER #10] 磁球与磁棍

首先 \(O(n^2)\) 的记录子树内分成的块数的树形背包是显然的,考虑如何减少状态。一个观察是若存在分成 \(k\neq n-3\) 块的合法方案,那么一定存在分成 \(k+2\) 块的合法方案,而一定不可能存在分成 \(n-1\) 块的合法放按。证明可以考虑对与叶子不同色的点连出的边进行调整。于是可以将树形 dp 的状态改为记子树内能合法地分成奇/偶数块的最小块数,还原方案时可以先找到最少块数再按上述方法调整。

[AGC023E] Inversions

随便推式子算算就好了。

https://atcoder.jp/contests/agc023/submissions/30665015

[CF1656G] Cycle Palindrome

先随便找一个排列将它变成回文串,然后通过交换 \((i,n-i+1)\) 和同时交换 \((i,j),(n-i+1,n-j+1)\) 这两种操作把它变成只有一个环,方法显然。

https://codeforces.com/contest/1656/submission/152576612

[USACO22OPEN] Hoof and Brain P

注意到若一个指示物所在节点去重后只有一个出边,那么 B 可以强制让这个指示物走到出边连向的点。于是每次选择一个只有一个出边的点,将它与连向的点合并,一直重复。最后 B 胜当且仅当这两个指示物在同一个缩完后的点上。这个过程可以启发式合并实现。

https://www.luogu.com.cn/record/73287297

posted @ 2022-04-25 18:16  Y25t  阅读(121)  评论(0编辑  收藏  举报