联合省选 2021 简要题解

「联合省选 2021 A | B」卡牌游戏

  • sol:可以枚举 \(l,r\) 表示保留 \(a_l,\dots a_r\),注意到若 \(min(b_i)(i<l)<a_{l}\),则 \(l+1\) 一定不比 \(l\)
    对于 \(r\) 同理,现在的问题就是 \(max(a_r,max(b_i)(i<l))-min(a_l,min(b_i)(i>r))\)
    注意到若枚举 \(l\)\(a_r<max(b_i)(i<l)\),那么 \(r-1\) 一定不比 \(r\) 由,双指针扫到最优的 \(r\) 即可,同理可以枚举 \(r\) 对一些最优的 \(l\) 产生贡献
    复杂度 \(O(n)\)

「联合省选 2021 A」矩阵游戏

  • sol:首先随便构造一个,注意到所有的调整操作都形如:选择一行,对奇数列 + x,偶数列 - x
    考虑每行操作为 \(c_i\),对列同理,设为 \(d_j\)
    那么就存在限制:\(0\le a_{i,j}\pm c_i\pm d_j\le 10^6\),将奇数行和偶数列反号就可以差分约束了
    复杂度 \(O(n^3)\)

「联合省选 2021 A | B」图函数

  • sol:即求删去前 \(i\) 条边,前 \(j\) 个点,\(j+1\) 好点强连通分量的大小之和
    考虑枚举 \(j\),一条一条加入边,求出每个点在加入了 \(t\) 条边后可以从 \(j+1\) 到达
    用反图求出每个点在加入 \(t\) 条边后可以到达 \(j+1\)
    现在考虑如何求出,类似最短路(每次选最大的边扩展),可以做到 \(nm\log n\)
    考虑一种巧妙的做法,维护 \(j+1\) 的连通块 \(S\),若当前存在一条边 \((u,v)\) 使得 \(u\in S,v\notin S\),那么我们从 \(v\) 开始 \(dfs\) 所有点
    那么一个点只需要被 \(dfs\) 到一次就可以求出最小时间
    复杂度 \(O(nm)\)

「联合省选 2021 A | B」宝石

  • sol:处理出倍增数组,在 \(lca\) 的另外一头要套一个二分,复杂度 \(O(n\log^2n)\)
    需要用桶维护链上某个颜色最后一次出现的点

「联合省选 2021 A | B」滚榜

  • sol:容易得到枚举排列的做法,求出每个点最少被加多少就可以了
    下面考虑状压 dp,每个点的贡献有两个:若编号比前面的大,那要多抬一个,若值比前面的大,那要多抬 \(a_i-a_j\)
    注意到后面的贡献可以在当前抬的时候提前计算,故只需要压前一个是什么就可以了
    复杂度 \(O(2^nn^2m)\)

「联合省选 2021 A」支配

  • sol:直接支配树 \(O(qm\alpha(n))\) 可以有 75 分
    考虑优化,注意到若 \(u\) 改变,则 \(u\) 在支配树上的子树都改变
    称最高的改变的点为本源点,那么本源点的父亲一定不再支配它
    下面考虑求出本源点,若 \(fa_u\) 不再支配 \(u\),那一定存在路径:\(1\to x\to y\to u\)
    使得 \(1\to x\) 不经过 \(fa_u\),那么就是要求 \(fa_u\) 不支配 \(x\)
    另外就是 \(y\) 可以不经过 \(fa_u\)\(u\),我们枚举 \(u\),可以预处理出所有合法的 \(y\)
    预处理的复杂度为 \(O(n(n+m))\),询问只需要枚举 \(u\),复杂度 \(O(nq)\)
posted @ 2021-04-22 20:58  FSYo  阅读(357)  评论(0)    收藏  举报