2022.1.10 模拟赛
「2017 山东一轮集训 Day1 / SDWC2018 Day1」Set
设异或和为 \(s\),
- \(s\) 第 \(i\) 为 \(0\),则 \(x_1,x_2\) 这一位可能都为 \(0\),或者都为 \(1\);
- \(s\) 第 \(i\) 为 \(1\),则 \(x_1,x_2\) 这一位有且只有一个数是 \(1\)。
对于 \(s\) 中为 \(0\) 的位置尽可能让 \(x_2\) 为 \(1\),再对于 \(s\) 中为 \(1\) 的位置尽可能让 \(x_2\) 为 \(1\) 即可。
那么可以将 \(s\) 中的位分成两类,按照为 \(0\) 的位置从高到低、为 \(1\) 的位置从高到低,的顺序重排。然后建立线性基求最优的 \(x_2\)。
「2017 山东一轮集训 Day5」字符串
讲过的题。
「2017 山东一轮集训 Day3」第二题
儿子顺序有关的无标号有根树,和其括号序构成双射。
二分答案,线段树维护括号序的哈希值,然后按深度逐层修改查询。\(\mathcal O(n\log^2n)\)。
后来发现,每个点距离 \(\le k\) 的点形成括号序是总括号序的若干区间,可以暴力合并,\(i\) 和 \(i+k\) 层之间双指针,即可 \(\mathcal O(n\log n)\)。
总结:
按位贪心没细想,线性基没学好不会用。
\(10^5\),\(\log^2\),常数大,还敢双哈希,被卡活该咯。