2021-team06-C220426

从 Trac 迁移的文章

这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。

原文章内容如下:

[/wiki/2021-team6 返回]

== Ranklist ==


== submission ==



== 概述 ==

solved: 6/12  dirt: 

rank: 



==  ==

== 总结 ==




== 题解 ==

A: 树剖,节点记录A的和,Dist到左右端点的和,A*Dist到左右端点的和。

B: 按边权从小到大加边,维护前i个点构成的连通块数量,若小于等于K+1则计入答案。

C: 二分答案mid, two pointers把所有x距离≤mid的点纳入考察范围,每插入一个点就寻找它当前在考察同色点集中的前驱和后继,修改线段树上(max(it--w+1, y),min(it2-1, y+w))区间,然后check全局最大值是否为k即可。

D:考虑每个点是上出还是下出,对于每一对点正好有四种可能。枚举i,j判断两者形状:li, ri, lj, rj不处理, li, lj, rj, ri需要lj, rj同上同下, li, lj, ri, rj需要lj, ri异上下。然后跑一遍二分图判断NO,最后同上下和异上下的点参考样例输出。

E: 数学题,归纳法证明对于y>x,点y连到点x的概率均为ax/sx,后面随便写。

F:每对路径转化为dfs树根到两点的距离加上若干个环,于是可以跑一遍tarjan把环&自环放入线性基。
训练时发现性质:设mx(a)为a到一个线性基异或出来的最大值, mx(a)^mx(b)^mx(0) = mx(a^b).

G:区间DP+斜率优化

H:维护每对点的间隔,对每个点求当其取到最大的半径时,向左和向右拓展且半径递减的可行圆序列,则对于每个点得到一系列的半径candidate,最后递推一下即可。

I:log2[转折点]个数,手动模拟找规律

J: 观察发现A3到A7连在一起,考虑枚举A2,单调栈维护右边的(A4+A5+..+A7-A3), 二分左边的A1.

K: 使用两个set,一个装供“反悔”操作的区间2,一个装当前匹配好的区间对。

L:二分答案,爆搜。

[/wiki/2021-team6 返回]

Ranklist

submission

概述

solved: 6/12 dirt:

rank:

总结

题解

A: 树剖,节点记录A的和,Dist到左右端点的和,A*Dist到左右端点的和。

B: 按边权从小到大加边,维护前i个点构成的连通块数量,若小于等于K+1则计入答案。

C: 二分答案mid, two pointers把所有x距离≤mid的点纳入考察范围,每插入一个点就寻找它当前在考察同色点集中的前驱和后继,修改线段树上(max(it--w+1, y),min(it2-1, y+w))区间,然后check全局最大值是否为k即可。

D:考虑每个点是上出还是下出,对于每一对点正好有四种可能。枚举i,j判断两者形状:li, ri, lj, rj不处理, li, lj, rj, ri需要lj, rj同上同下, li, lj, ri, rj需要lj, ri异上下。然后跑一遍二分图判断NO,最后同上下和异上下的点参考样例输出。

E: 数学题,归纳法证明对于y>x,点y连到点x的概率均为ax/sx,后面随便写。

F:每对路径转化为dfs树根到两点的距离加上若干个环,于是可以跑一遍tarjan把环&自环放入线性基。

训练时发现性质:设mx(a)为a到一个线性基异或出来的最大值, mx(a)mx(b)mx(0) = mx(a^b).

G:区间DP+斜率优化

H:维护每对点的间隔,对每个点求当其取到最大的半径时,向左和向右拓展且半径递减的可行圆序列,则对于每个点得到一系列的半径candidate,最后递推一下即可。

I:log2[转折点]个数,手动模拟找规律

J: 观察发现A3到A7连在一起,考虑枚举A2,单调栈维护右边的(A4+A5+..+A7-A3), 二分左边的A1.

K: 使用两个set,一个装供“反悔”操作的区间2,一个装当前匹配好的区间对。

L:二分答案,爆搜。