11.2
这是 CSP 之后触发保底机制了吗,怎么是 4 + 0 模拟赛。
Kia Bakes a Cake
DS, dp, CF*3100.
模拟赛场上虽然一直在饭堂但是这个题最后还是过了没有变成区。
首先发现有不能重复的限制连多项式复杂度的暴力都打不出来,接着感觉不能重复的限制是假的,然后尝试证明发现容易有 \(\sum\limits_{j=2}^i \text{dist}(s_{j-1},s_j)<\text{dist}(s_i,s_{i+1})\),而对于任意一个 \(s_j(j,\(\text{dist}(s_i,s_j)\) 小于等于前面那一坨,因此 \(s_j\) 不可能作为 \(s_{i+1}\) 出现。
于是考虑 dp,由于答案显然不高于 \(\log_2 n+1\),可以将长度作为第二维,又因为需要考虑起点所以转置,令 \(dp_{u,i}\) 表示从 \(u\) 出发走 \(i\) 步,第一步的长度最大是多少。对于起点 \(u\) 来说,答案即为最大的 \(i\) 满足 \(dp_{u,i}\ge 0\)
。
转移形如 \(dp_{v,i+1}\leftarrow \text{dist}(u,v),2\text{dist}(u,v)\le dp_{u,i}\)
,容易点分治优化。场上饭堂了写了树状数组 3log,虽然把点分治过程离线下来只需要 500ms 不到,但是这个偏序范围是最大深度,直接开个数组维护最大和来自不同子树的次大即可。
回天
DS, Number Theory.
首先去重。值域很大,枚举其中一个的 \(\gcd\) 是没有前途的。有一个简单的解是把所有最大值 \(x\) 单独拿出来放进 \(A\),剩下的放进 \(B\),答案一定不会低于 \(x+f(B)\)
。
考虑如果 \(A\) 中掺进去其它元素,一定有 \(f(A)\leq x/2\) ,并且只要 \(B\) 中不同元素 \(\ge 2\) 个,\(f(B)\) 也一定 \(\leq x/2\)
,显然是不优的。由此得到一定有一个集合中只有一种数。
这里可以直接大力前后缀合并维护了。但是发现这个单独放一个集合的数一定是最大或次大值。假设次大值为 \(y\),对于一个 \(z,有 \(z+\gcd(S\setminus\{z\})\le z+\gcd(x,y)\le z+x-y,一定不优于把最大值单独拿出来。
直接维护除开最大值和次大值的 \(\gcd\)
即是 1log。
[UOI 2025 II Stage] Digital Game
Ad-hoc.
神人 @xxxxxzy 叫人一起享用震撼美味。
发现部分分非常诡异,而且没有什么思路,考虑先大力状压 dp \(O(2^nn)\)
打表。发现不了任何规律,但是判一下初始就输了就可以得吃六个包的部分分。这个部分分摆成这个样子想必有什么深意吧!
此时发现第一个包一定是 No,这是为什么呢?紧接着发现其实是在 \(n\ge 4\) 时才会必输。那么第二个包呢?打个表发现第二个包在 \(n\ge 10\) 时必输!那么我们结合剩下的猎奇部分分合理猜测 \(n\ge 20\)
时必输!然后发现过了!
证明可以根据字符集大小归纳。
[UOI 2024 II Stage] GCD, Sum, Multiply. What?...
DS.
什么东西。
对右端点扫描线,显然后缀 gcd 只有 \(O(\log V)\) 种,只有边界位置可以贡献答案。直接大力数点可以做到 \(O(n\log n\log V)\)
。
但是我们可以动态维护贡献答案位置对应的单调栈,可以做到 1log。
11.3
杂题。
神人 tzy 给我喂弱智题然后我(几乎)全都不会做。
CF1601D Difficult Mountain
Ad-hoc, CF *2700.
考虑 exchange argument,然后分讨即可。
排序之后可以直接贪心,而不是像这个弱智一样 dp。
CF1781F Bracket Insertion
dp, CF *2700.
考虑左括号 1 右括号 -1,条件等价于任意时刻最小前缀和非负。
直接正着做需要刻画整个序列。考虑第一次操作插入的括号对,之后的操作会在三部分进行,每一部分的前缀和都会被加上 \(0,-1/1,0\),于是可以设计 \(dp_{i,j}\) 表示前缀和整体加上 \(j\),在 \(i\)
次操作后仍然合法的方案书,可以分步转移优化。
QOJ10542 Protecting Kingdom
DS.
一个简单的想法是长链剖分,然后合并轻儿子贡献时二分更新答案,这样是 1log 的。
考虑到答案的上界是 \(\sum k\leq 10^6\)
,可以直接每次检查当前答案能够增加,均摊线性。
[UOI 2023] An Array and XOR
DS.
考虑给定集合怎么做,直接在 Trie 上贪心,如果当前节点只有一个儿子,可以将 \(x\) 这一位设置为相反值来获得 \(2^i\) 的贡献。否则两个子树只能取一边,两边取 \(\max\) 即可。莫队维护 Trie 上这个 dp 可以做到 \(O(nm\sqrt q)\)
,不太能过。
上面是 tzy 喂给我时他说的部分,但是我觉得被他带歪了,非常生气!
我们直接考虑枚举 \(x\)。显然 \(x\) 应当是某个 \(a_i\) 的补,而答案的二进制下第 \(c\) 位为 \(1\) 当且仅当比 \(c\) 更高的位与 \(a_i\) 相同的 \(a_j\) 第 \(c\) 位也都和 \(a_i\) 相同,也就是在 Trie 树上这个地方只有 \(a_i\) 一个方向的儿子,可以发现这本质是直接维护 dp 的决策点。发现对于一个 \(i\) 向左向右分别有 \(O(m)\) 个使贡献发生改变的位置,因此共有 \(O(nm^2)\)
个支配区间。
可以直接数点,由于 \(nm^2\) 和 \(q\) 根本不是一个量级,考虑分块平衡到 \(O(nm^2+q\sqrt n)\)
。
[SWERC 2021] Drone Photo
Ad-hoc.
怎么,不会,弱智题/ll
研究发现每个合法的块都恰好对应两个“角”的结构,满足“角”的顶点是中位数,于是 \(O(n^2)\)
数出"角"再除以二就对了。
[VKOSHP 2025] Strange Sum
dp.
首先考虑刻画笛卡尔树结构,可以想到树上差分一下转换贡献为 \(f(l,r)=\sum\limits_{i=l}^r\sum\limits_{j=i}^r w_{i,j}\)
。
然后 \(f\) 显然满足四边形不等式,所以随便乱选一定能对应一组解。然后是一个背包的优化,可以先贪到剩余重量不超过 \(O(n^2)\)
。
11.4
什么叫昨天才做了一个长剖题今天模拟赛 T3 就搬了 QOJ14805 Cyan White Tree。为什么今年五月做过这个题但是其他人没做过。
T4 还是 Priority Queue 3,前两个题没有难度,绷不住了。
QOJ9986 Shiori
DS.
考虑每次暴力找 mex,如果没有操作一复杂度是对的,因为小于 mex 的数全都至少会翻倍。
有操作一可以颜色段均摊,每次可以直接取出一整段连续段一起处理保证复杂度。
[THUPC 2024 决赛] 古明地枣的袜子
DS.
等价类分治板子。
把修改操作按 \(x\)
排序之后相当于找到某个时间区间内的 info 合并起来,可以直接分块然后内部等价类分治。
复读机 / repeat
Ad-hoc, ds.
考虑二分答案 \(A\),按两个数相加 \(\leq A\) 的套路将数分为 \(\leq A/2\) 的和 \(>A/2\) 的,容易发现 \(\leq A/2\) 的必选,\(>A/2\) 的要选不可能将 \(\leq A/2\)
的顶掉,然后数据结构随便做做即可。
[ICPC 2022 Jakarta R] Sharing Bread
Counting, math.
不想说什么了。
11.5
模拟赛,但是累死了,完全摆着打,T1 做了 inf 小时,T2 大模拟挂飞了,原因是无解漏判了,T3 做了 inf 小时最后 10min 写了个 \(O(n^4)\),但是赛后随便做都是 \(O(n^3)\)
,什么东西。T4 感觉就是需要时间做,但是场上相当于开都没开。
CSP 出分了,\(100+100+68+50\)
,T3 好多假算都在反向挂分,虽然能够预料但是输出大样例可以获得 24 就是态度问题了吧。不是为什么有人嘴上说不在意 CSP 成绩却又明晃晃拿 CSP 成绩恶心人。