摘要:
给定一个包含 \(n\) 个点和 \(m\) 条边的无向联通图 \(G=(V,E)\)。 再给定包含 \(k\) 个结点的点集 \(S\),选出 \(G\) 的子图 \(G'=(V',E')\),使得: \(S\subseteq V'\); \(G'\) 为连通图; \(E'\) 中所有边的边权和最 阅读全文
摘要:
代码: #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<queue> using namespace std; const int N=109,INF=1<<30; int n,m, 阅读全文
摘要:
容易发现这就是后缀排序后连续 \(k\) 个后缀的 \(lcp\) 的最小值的最大值,用单调队列跑一遍 \(height\) 数组即可。 代码: #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #in 阅读全文
摘要:
对每一条边单独考虑其贡献。 我们现在想算有多少连续区间跨过了这条边。正难则反,我们考虑有多少连续区间不跨过这条边,最后用总的减去这些。所以我们只需要计算当前子树内和子树外的连续区间的贡献就行。 考虑 dsu on tree。子树内用并查集维护并计算极长子段的贡献,子树外用set维护其补集并计算贡献即 阅读全文