摘要:
相当于求边权和为3的倍数的路径条数 阅读全文
摘要:
点分治 感觉像线性数据结构上的二分 或者说线性数据结构上的二分就是点分治的特殊情况 阅读全文
摘要:
矩阵树定理 注意模数不是质数,不能用逆元 用了一种类似辗转相除的方法,非常巧妙 阅读全文
摘要:
高斯消元模板 需要判断无解和多解 阅读全文
摘要:
把能坐在一起的连边,求出点双连通分量,再对每个点双连通分量判一下是否存在奇环。 阅读全文
摘要:
边双连通分量模板 求出边双连通分量,缩点后成为一个树。 若要使得任意一棵树,在增加若干条边后,变成一个双连通图,那么 至少增加的边数 =( 这棵树总度数为1的结点数 + 1 )/ 2 阅读全文
摘要:
1 #include 2 #define ll long long 3 using namespace std; 4 const int N=510; 5 int n,T,ans1,cnt,siz,dfn[N],low[N],timer; 6 ll ans2; 7 bool vis[N],iscut[N],viscut[N]; 8 struct Edge{ 9 int ... 阅读全文
摘要:
建出虚树 两遍dp求出虚树上的各点被哪个点管辖 再对虚树上的每一条边计算贡献 阅读全文
摘要:
朴素算法O(n^3) 可用四边形不等式优化到O(n^2) 1 #include 2 using namespace std; 3 const int N=210,oo=2e9; 4 int n,a[N],f[N][N],p[N][N],ans1=oo,ans2; 5 int main(){ 6 scanf("%d",&n); 7 for(int i=1;if[j][k... 阅读全文
摘要:
求平均时间最小就是求总时间最小 假设每个顾客对应的技术人员已经分配好了 那么技术人员在修某一辆车时对答案的贡献就是 time × 在排队的人数 所以可以想到把技术人员拆成n个点{mi1,mi2 ,……,min } 对于每个顾客,向mij连一条容量为1,花费为 time*j 的边 求这个二分图的最 阅读全文