Processing math: 84%

2019 牛客暑期多校训练营第 3 场

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.

模拟一下双向链表即可。