4.13-4.14 构造
四道题构造两道是 3500,我是 fw 跳了。
第一道切了,无聊的找性质题,手玩几组就会了。。
[ROI 2018] Quick sort
容易找到一个期望 \(O(n\log n)\) 次操作的方法:对于 \(n\to 1\) 每次考虑将枚举到的数移到对应的位置,和位置之间的距离每次会减半,因此可以做到 \(O(n \log n)\),不过这个做法显然没有什么前途。
考虑经典套路,将序列从原本排好序的状态用逆操作变为初始序列,最后将操作序列倒过来输出。
容易发现逆操作是将序列劈成两半,然后交替插入。
此时容易操作 \((1,2i)\) 这个区间将 \(i\) 移到 \(2i\),也就是说期望操作次数变为了 \(\log p_i - \log i + 1\)。
那么这有什么优势呢?感性地想,原先复杂度较大的原因在于 \(\log i\) 较大的 \(i\) 比较多,且 \(\log i\) 是正贡献,而这里的 \(\log i\) 变为了负贡献。严谨证明我不太会,但是期望确实是 \(O(n)\) 级别的。
不过这只是基于随机数据下的期望。为了不被卡,我们可以先乱操作几次,然后再开始做。
[CF1599A] Weights
人类智慧题属于是。
手玩一下,先不管 LR 的限制,直接从大到小排序后交错放,容易发现每一次天平一定改变,又容易发现去除最小的那一个天平朝向一定不变。
此时你就突然发现这个东西好像非常贴合调整法啊!所以直接从最后的情况考虑,直接令最后就是交错放的,根据 LR 直接删数就行了。
[CF1844G] Tree Weights
与树上路径有关,容易想到将 \(d_i\) 与 lca 联系在一起。
以 \(1\) 为根,令 \(dep_i\) 表示 \(i\) 号节点的深度。容易得到 \(d_i=dep_i+dep_{i+1}-2 \times dep_{\text{lca}(i,i+1)}\),变式得到 \(dep_{i+1}=d_i-dep_i+2 \times dep_{\text{lca}(i,i+1)}\)。
\(dep_1=0\),发现主要难以处理的地方在 \(dep_{\text{lca}(i,i+1)}\)。注意到这一项的系数为 \(2\),也就是说我们可以先将其舍弃然后考虑所有 \(dep_i\) 的奇偶性。相当于求出了所有 \(dep_i \ \text{mod}\ 2\) 的值。
紧接着我们惊奇地发现由于这个 \(2\) 的系数,所有 \(dep_i \ \text{mod}\ 4\) 的值只与 \(dep_{\text{lca}(i,i+1)}\ \text{mod}\ 2\) 有关。
因此直接递推下去到 \(2^{60}\) 就行了。
当然,以上结论都是在有解的情况下才成立。无解的情况结尾的时候特判一下有没有矛盾就行了。
[CF1738G] Anti-Increasing Addicts
好题。
最长链小于 \(1\),根据 dilworth,相当于 \(k-1\) 条反链覆盖 \(n^2-(n-k+1)^2\) 个格子。
容易发现最长反链长度肯定为 \(2n-1\),次长为 \(2n-3\)……然后你就发现这港后就等于 \(n^2-(n-k+1)^2\),也就是所有反链的长度都已经确定了。
考虑如何构造。
令第 \(i\) 条反链是从 \((n,i)\) 向上向右走到 \((i,n)\),容易只要反链不相交就是合法的。
先将所有必须覆盖的点做个最长链,第 \(k-i\) 条链必须覆盖最长链长度为 \(k-i\) 的点。贪心地优先往上,往上不合法再往右。
容易实现。

浙公网安备 33010602011771号