本来不想做 ucup 了,但是发现我好像也没有别的题能做(大雾。
比赛链接。
C. Cliques
题意
给定一棵
进行
图
在每一次操作之后,输出图
题解
有点脑瘫了哥们。
首先可以知道,两条链的交一定是一条链(可能为空),所以多条链的交也一定是一条链。
那么令
那么考虑直接枚举
设有
带修的话直接上树剖就行,时间复杂度
提交记录。
G. Matrix Inverse
题意
给定一个矩阵
题目额外给出一个矩阵
题解
令
首先因为
考虑一个经典 trick,我们随机一个
如果
否则如果有
同理我们随机一个
此时如果有
这样我们就能确定
考虑
那么我们直接对于
时间复杂度
提交记录。
K. Jump Graph
题意
给定一个长度为
图上存在边
对于每一个点
题解
考虑建出这个排列的笛卡尔树(大根)。
考虑对于一个点
(这是显然的,首先这个点得跳出这个子树,如果要跳出子树就只能往祖先跳,那么显然只会往
那么考虑先求出每一个点到其子树内点的距离和,但是容易发现这里有一点问题。
假设我们要从点
但是我们发现
那么我们对于每一棵子树维护,以其整个区间的左侧一个极大点为起点,到整棵子树点的距离和是多少。
再额外维护,有多少个点,从左侧极大点的距离比从右侧极大点距离小,有多少个点相等,有多少个点右边小。
这样就能处理出大部分情况了,有少部分情况,子树左侧或右侧不存在极大点,可能需要特殊处理。
再预处理完每一个点到子树内的距离和之后,再递归一遍就能算出每一个点到子树外的距离和了。
时间复杂度
提交记录。
这题感觉写起来真的好煎熬好煎熬