10 月记录
CF2159
CF2152
http://192.168.102.138/JudgeOnline/contest.php?cid=2310
http://192.168.102.138/JudgeOnline/contest.php?cid=2312
http://192.168.102.138/JudgeOnline/contest.php?cid=2314
https://htoj.com.cn/cpp/oj/contest/detail?cid=22528002072704
P14203
P14177
P14141
P14136
P14135
P14134
P14181
P14182
https://atcoder.jp/contests/arc207
QOJ833
CF2152E
有一个长度为 \(n^2+1\) 的排列,可以证明他存在长度为 \(n+1\) 的单调子序列。
你需要交互求出任意一个,每次询问你可以知道若干下标前缀最大值的下标。
证明可以考虑那个反链和链覆盖的定理。
由此考虑构造,不断取出前缀最大值,若长度 \(>n\) 则直接合法,否则证明删去之后序列依旧存在单调子序列,且若是下降的,开头一定能接上一个,因为是前缀最大值,故询问 \(n\) 次即可。
CF2152F
给出非递减序列,每次询问一个区间的最大子集大小:满足子集任意三个值的 \(\max-\min > z\),\(z\) 为定值。
\(n\le 2\times 10^5\)。
贪心是从左往右加入,每次加入最小的合法数。
预处理出 \(R_i\),则下次加入合法数为 \(\max(y+1,R_i)\)。
直接记忆化就过了。
挑战自动机(dfa)
给出一个每个点出边为 \(2\) 的自动机(输入两个字符能到的状态),并给出两个初始点,求最短字符串长度使得可以区分出这两个状态是不同的(即终点颜色不同)。
\(n\le 2\times 10^6\)。
排列(perm)
给出长度为 \(n\) 的序列 \(a\),求置换数,满足:
\(n\le 5\times 10^3,1\le |a_i|,C\le 10^9\)。
可能更简单的方法。
先考虑全正数。
定义 \(R_i\) 为最大 \(j\) 使得 \(a_j a_i\le C\),则 \(i\) 能与 \([1,R_i]\) 接触,\(R_1\ge R_2\ge \cdots R_n\)。
初始想法是从小到大或从大到小加入,维护连续段状态,但是这样限制完全不能处理。
我们希望找到一个加入顺序,使得限制可以合并处理。
不妨考虑按照 \(i\le R_i\),\(i> R_i\) 分成一二两类,其实分界点就是最大数 \(a_x^2\le C\)。
对于一类,从后往前加,可以使得之前加入的一类都可接触,二类可接触点集合不断扩展。
对于二类,从前往后加,可以使得之前加入的二类点都不可接触,一类不可接触点集合不断扩展。
从分界点开始做类似双指针的加入。
令 \(i\) 从 \(pos\to 1\),每次先加入 \((R_{i+1},R_i]\) 的二类点,再加入 \(i\) 这个一类点。
这样的好处是,二类点的限制是不能和之前加入的所有点接触,即他能做的操作只有新开一段。
加入一类点的限制是没有限制,即他能做的操作有新开一段,合并两端,扩展一段。
故令 \(f_j\) 表示当前共有 \(j\) 段的方案数。
若同时有正负数,可以先内部处理所有正数分成 \(j\) 段的方案数与负数分成 \(k\) 段的方案数。
由于正负数可以任意接触,故枚举正数段数,负数只能将中间间隙都补上,额外讨论开头结尾颜色即可合并。
CF2152G Query Jungle
给出颜色为 \(0/1\) 的树,操作为:
- 子树翻转
- 求出最小数 \(k\),使得存在 \(k\) 条从根开始的链覆盖所有 \(1\) 点。
\(n\le 2\times 10^5\)。
ddp
即可。
CF2152H
给出带正整数边权的树,若为每个顶点分配 \(x_i\) 的非负正数权值,定义 \(f(x_i)\) 为每种将点染色成 \(0/1\) 的方案中,颜色 \(0\) 点权加颜色 \(01\) 边的最小值。
\(q\) 次询问给出 \(l_i\),求 \(f(x_i)\ge l_i\) 的要求下,\(\sum x_i\) 的最小值。
\(n,q\le 2\times 10^5\)。
H1 的一种方法是子树从下往上贪心,但是这个不好扩展。
考虑一个调整:对于 \(00\) 边 \(e_1\) 和 \(01\) 边 \(e_2\),若 \(w(e_1)\le w(e_2)\),则断开 \(e_1\),删除与 \(e_2\) 连接的联通块,不劣。
这样联通块数量为 \(O(n)\),钦定最小边然后不断扩展即可。
这个其实就是 kruskal 重构树的子树。
那么同时维护 \(\sum x_i\) 的最小值,\(ans_u=\max(ans_{lc}+ans_{rc},L-sum(u))\)。
考虑将维护 \(ans_u(L)\) 这个凸函数,slope trick 维护即可。
CF2159
双序列扩展(expand)
编辑字符串(edit)
过河卒(zu)
Hack!(hack)
神探(god)
月食(weep)
瘦子(skinny)
bugaboo(bugaboo)
代码(code)
宝石(gem)
P14203 这次要永远 做朋友
P14144 Strange Alice Game II
P14181 「FAOI-R8」Hotel California
P14182 「FAOI-R8」豹邻跑恒
P11427 [清华集训 2024] 绝顶之战
P11420 [清华集训 2024] 乘积的期望
QOJ14141 Lice Hopping
本文来自博客园,作者:蒟蒻orz,转载请注明原文链接:https://www.cnblogs.com/orzz/p/19139376