摘要:
分析 对于图中每两个可形成一条路径的点之间,都会有它们的最短路,题目所求的就是对于给出的 \(m\) 条道路,有多少最短路经过该道路。 可以知道这不是一次搜索就可以做到的,因为它会在搜索过程中不断更改最短路,于是我们考虑在确定起点的情况下,它到各点的最短路经过了哪些路径。 我们以 \(f_i\) 表 阅读全文
摘要:
题意 操作1:将两点所在的区间合并。 操作2:将一点移至另一点所在集合内。 操作3:求一点所在区间的元素个数和元素的总和。 分析 并查集的大小以及元素和是很好计算的,在合并时将“认亲”的点的对应值加给它祖先就行了。主要是操作2。 对于一个点单独抽离出来,我们发现是不好弄的,按照常规的方法做的话,如果 阅读全文
摘要:
分析 看到题目所求的是一个最大差值,很快想到二分答案,对于一个二分到的 \(mid\),我们枚举满足要求的最小值和最大值,表示我们路径只能经过权值在二者之间的点,这样走一个 \(dfs\),用 \(vis\) 数组判断起点终点是否连通就可以了。 这样二分的正确性也容易证明了,当一个答案可行时,更大的 阅读全文
摘要:
题意 \(T\) 组数据,每组给出 \(n\) 个字符串,求一个最长字符串,满足其在每一个字符串都互不重叠地出现至少两次,输出其长度。 分析 既然是输出长度,很容易就能想到二分答案,二分可能的长度,对于一个已得的答案长度,比它小的长度一定也能满足,因为每一个该长度的串都能提取出更短的相同子串,因此二 阅读全文