一句话题解(2020-04)
看起来很牛逼,实际上是因为懒得写详细题解所以摸了,只写一句话题解。
02
CF1303F
注意到填充颜色递增,对每个颜色而言就是此颜色正序加入,非此颜色倒序加入,并查集正反两遍维护,链接。
10
CF1303G
点分治,经过重心的路径分成上下两段,对于一个上段,权值关于下段的长度是一个一次函数,用李超树维护上段的函数,链接。
CF1301E
预处理出以每个位置为中心的最大图标大小,询问时二分答案查询一个矩形区域中的最大值是否不小于答案,二维 RMQ,链接。
CF1301F
BFS 预处理每个颜色到所有点的距离,要么不传送(曼哈顿距离)要么传送(枚举使用了传送的颜色,到起点 + 到终点),链接。
11
「JSOI2019」精准预测
离散化,2-SAT 建图,建出来发现是天然的 DAG,传递闭包直接 bitset 整上,为了防止 MLE 需要分块做 bitset,链接。
17
「JOI 2020 Final」集邮比赛 3
按照第一次经过每一张邮票的顺序做区间 DP,第三维状态是可收集邮票数,DP 值为最少需要花费的时间,链接。
「JOI 2020 Final」奥运公交
注意到是往返,对正反图以 \(1, n\) 为起点建立 \(4\) 棵最短路树,Dijkstra 算法使用 \(\mathcal O (N^2 + M)\) 的实现。
一条边 \(u \to v\) 反向后的 \(1\) 到 \(n\) 的最短路就是「\(1\) 到 \(n\) 不经过这条边的最短路」与「『\(1\) 不经过这条边到 \(v\) 的最短路』+ 边权 +『\(u\) 不经过这条边到 \(n\) 的最短路』」的较小值,如果这条边在最短路树上则需要重新求最短路,\(n\) 到 \(1\) 的最短路类似,链接。
27
「HNOI2019」多边形
这题比较难,本应写正式题解的,但是不想写,仅仅是记录一下,链接。
28
「JOI 2019 Final」有趣的家庭菜园 3
考虑 \(\mathrm{dp}[r][g][y][3]\) 表示最终序列中前 \(r + g + y\) 个的颜色分布以及最后一个颜色时的最小逆序对数,转移显然,链接。
「JOI 2019 Final」硬币收藏
普及组贪心或者模拟费用流,反正我确实不会,链接。
「JOI 2019 Final」独特的城市
对于某点的独特的城市都分布在它到离它较远的直径端点的路径上,对两个直径端点分别考虑。
以端点为根做长链剖分,维护一个栈,在进入某点后栈内元素从浅到深表示忽略该点子树后的独特的城市(强制在到根的链上)。
要先把距离该点不超过次长子树距离的点退栈,然后才能往长儿子方向递归,然后把距离该点不超过最长子树距离的点退栈,然后统计该点自己的答案,再递归其它儿子,链接。
29
「JOI 2018 Final」月票购买
求出所有可能成为 \(S\) 到 \(T\) 的最短路上的边,把它们按照 \(S \to T\) 方向定向,建立分层图,第一层和第三层就是原图,第二层是定向后的那些边(\(0\) 权),每个点向下一层的同一个点连边,这样可以保证如果经过变成 \(0\) 权的那些边,一定是只会经过一条有向链,然后求 \(U \to V\) 的最短路,注意还需要按照 \(T \to S\) 方向定向一次,因为 \(U \to V\) 经过的那些边可能是与 \(S \to T\) 反向的,链接。
「JOI 2018 Final」毒蛇越狱
如果 \(\texttt{?}\) 的数量比较少就暴力,如果 \(\texttt{1}\) 的数量比较少,考虑容斥,需要预处理高维前缀和后的数组,如果 \(\texttt{0}\) 的数量比较少同理,三者结合可以得到 \(\mathcal O (L \cdot 2^L + Q \cdot 2^{L / 3})\) 的时间复杂度和 \(\mathcal O (2^L)\) 的空间复杂度,链接。