【A】数据结构(待完坑)

Subtree Minimum Query

对每一层建可持久化线段树,然后对于子树限制等于一个 dfn 区间。

Rollbacks (Hard Version)

技术阿加大家

Make a Palindrome

拆数不如合并。那么 \(f\) 在把 \(b\) 按段合并。
对于 \(b\) 的一对和相等的前缀和后缀,那么就会对操作数减一(一开始是 \(|b|-1\))。
考虑每个这种和相等的 \([i_1,j_1],[i_2,j_2]\)

Iris and Adjacent Products

显然我们要按 \(c_n,c_1,c_{n-1},c_{2},\cdots\) 排,其中 \(c\) 是从小到大排好序的数组。
那么我们只需要比较 \((1,2),(3,4),\cdots\) 这些下标对造成的贡献即可。
\(cnt(l,r)\) 表示值域在 \([l,r]\) 的数有多少个,那么需要满足 \(cnr(1,i)\ge cnt(\frac{k}{i},k)\),然后 \(i\) 只有 \(\sqrt k\) 种取值,于是莫队处理出每种数的数量然后贪心就好了。

Bottle Arrangement

先把 \(b\) 排序,然后考虑 \(a\) 最小值的若干个位置, \(b\) 的峰一定在相邻的两个最小值之间,然后其他位置用 \(b\) 的前缀填,在此计算减一次数即可。然后对峰递归子问题。

Split

喵。

Polygonal Segments

\(\max< \sum other\) 即可拼成一个多边形。
考虑一个合法区间能否拓展?如果加入 \(a\),现在的总和为 \(s\),那么 \(a<s\) 则可以加入,否则不行。
考虑使用线段树维护这个最长合法区间,合并两个节点信息时,拓展到的边界为 \(a\ge s\),那么只有 \(O(\log n)\) 个。双指针两边的这些可拓展边界,按 \(\max\) 越小的越先考虑。因为我们要满足 \(2\max<s\)。于是可以做到 \(O(\log n)\) 合并。

Closest Pair

我们只会往左/右找 \(w_j\le w_i\) 的。扫描线做,\(O(n\log n)\)

Wine Factory (Hard Version)

线段树,我们要维护:

  • 当前节点可以变成酒的含量
  • 流给下一个节点的水量
  • 从左边新加入水后还可以新产生的酒量
  • 从左边新加入水后还可以往下一个节点流的水量

\(O(n\log n)\)
当然 \(O(n\sqrt n)\) 的分块也是很好做的。

Rebrending

独立题解

posted @ 2025-09-10 18:02  TallBanana  阅读(7)  评论(0)    收藏  举报