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\),常数大,还敢双哈希,被卡活该咯。

posted @ 2022-01-10 15:00  RenaMoe  阅读(51)  评论(0编辑  收藏  举报