rank | solved | A | B | C | D | E | F | G | H | I | J |
---|---|---|---|---|---|---|---|---|---|---|---|
38 | 7 | Ø | O | . | O | . | Ø | O | O | . | O |
A
UpSolved by XLor.
对度数分块,对边序列分块。
边序列的块上打标记,暴力修改时维护对大点的贡献。
小点直接枚举每条边,大点枚举每个块对他的贡献。
大点的具体实现方式,对大点重新标号,有 √n 个大点,每个块上记录重新标号后的大点贡献,维护出块上整体翻转标记为 0/1 时的两种贡献。
B
Solved by XLor.
子序列贪心,子串将 0/1 转化为 +1/−1 后做前缀和,维护出每种值的第一个和最后一个出现位置。
D
Solved by Forsaken.
exBSGS 求出离散对数的循环节,枚举 ij 上的 j 算贡献,j 只需要计算小于等于 30 的情况,大于 30 的和 30 一致。
F
UpSolved by Henry and XLor.
枚举上下边界,搞出每列的最大值 / 最小值,枚举右边界,用两个单调队列维护出左边界。
G
Solved by Forsaken and Henry.
原题等价于计数 (l,r),满足 max。
分治,复杂度 O(n \log^2 n)。
H
Solved by Henry.
排序后找到中间点,稍微偏一下即可。
J
Solved by XLor.
模拟一下双向链表即可。