摘要:
ψ(`∇´)ψ 阅读全文
摘要:
将图按照邻接矩阵存为一个矩阵,则有性质为:该矩阵的 \(k\) 次方反映了 在该图上恰好走 \(k\) 次的可达性。 有了这条性质可以按边权将所有边排序,在图上动态加入能新走的边,用矩阵快速幂处理出当前图恰好走这条边边权次的可达性矩阵。每新加入一条边,用 floyd 求出加入这条边影响后新的最短路。 阅读全文
摘要:
er 阅读全文
摘要:
题意: 给定一个长度为 $n$ 的整数数组 $a$,求 $a$ 中前 $k$ 大的异或区间和之和。 首先对 $a$ 处理一个异或前缀和数组 $s$,这样区间 $[l,r]$ 的异或和就转化成了 $s_{l-1} \oplus s_r$。题目就变为求 $n+1$ 个数(包含一个空前缀)两个数异或前 $ 阅读全文
摘要:
首先用 manacher 处理一下。 然后我们可以枚举断点,问题变为求任意一个点为起点或终点的最长回文串,我们可以在 manacher 过程中更新这个值。 但这样做是不对的。因为我们只用了最长的回文串更新,未考虑一个点在大回文串内部的情况,所以我们可以考虑第二次递推,以 $l$ 数组(起点最长)为例 阅读全文
摘要:
题目链接 首先发现斜着平移比较难处理,所以考虑将平面逆时针旋转 $45°$。 接着发现风化也不好处理,但是风化的一定不会作为答案,所以我们可以离线,然后倒着处理操作,上升变为下降。 我们发现每个初始 $0$ 点最后的坐标就是它正着做时初始的坐标,且每次操作都只会将连续一段点的 $x,y$ 坐标修改。 阅读全文
摘要:
题面 首先考虑一个贪心策略:当地板已经放满需要取出一个时,取下一次使用时间 $nxt$ 最晚的那个。 所以我们只需要一个可以快速求出一个集合中 $nxt$ 最小的点并删除,插入新点的数据结构,这里很容易想到堆。 代码很简洁,注意数组的下标是位置还是颜色(考场 100 pts 到 0 pts)。 co 阅读全文
摘要:
DP。状态设计是点睛之笔。 首先显然有每行或每列只能有至多 $2$ 个棋子。 设状态 $f_{i,j,k}$ 为第 $i$ 行,有 $j$ 列只放了一个棋子,$k$ 列放了两个棋子。 之后直接转移即可。注意边界判断。 code: 点击查看代码 #include<bits/stdc++.h> #def 阅读全文