摘要:
题面传送门 这个$n$这么小肯定是拿来状压的。 我们考虑设$F_$为仅用$i$种公司生成的树方案数。 但是这个东西不是很好做,我们考虑设一个弱一点的状态:$G_i$表示用了$i$个公司的方案数。 这个$G$显然可以状压在$O(n32n)$时间内达到。 然后考虑$G$怎么推出$F$ 假设我们$F_{1 阅读全文
摘要:
题面传送门 我们将每个点拆成入点和出点,然后每条边入点和出点连边,表示这两个点可以在一条路径上。 那么总的答案就是点数减去匹配数。 输出方案这个东西也很好搞,就是对于每个点找到答案,然后直接并查集维护即可。 code: #include<bits/stdc++.h> #define I inline 阅读全文
摘要:
题面传送门 这种强制选$k$的一般就是wqs二分。 我们考虑二分一个数,然后将所有和$s$相连的边加上这个数。 然后跑完wqs二分看看是不是$k$条边,如果大于则增大左边界,反之缩小右边界。 这样时间复杂度是$O(mlogmlogv)$的过不去。 可以发现时间复杂度瓶颈在排序上。 我们每次只对固定的 阅读全文
摘要:
题面传送门 这个东西肯定有一个性质。 那么这个性质就是对于每个最小生成树同种权值的边所联通的点其实是一样的。 有了这个结论就很好做了,枚举每个权值然后其它树边缩点,然后跑矩阵树定理即可。 时间复杂度$O(nm+n^3)$ code: #include<bits/stdc++.h> #define I 阅读全文
摘要:
题面传送门 介绍一个结论:无向无权图的生成树个数是度数矩阵减去邻接矩阵去掉任意行列的行列式的值。 然后有权图就是将度数改为权值。 有向图的话需要考虑是内向树还是外向树,内向树每个点权值是出边,外向树是入边。 然后就可以开开心心$O(n^3)$了。 code: #include<bits/stdc++ 阅读全文
摘要:
行列式大概是对于一个矩阵让你算这么一个数:\(\sum\limits_{p}{(-1)^{τ(p)}\prod\limits_{i=1}^{n}{a_{i,p_i}}}\) 直接根据定义算这个东西是$O(n!)$的显然不行。 我们考虑如果一个行列式的下三角是空,那么它的权值就是对角线乘积。 所以我们 阅读全文
摘要:
很妙的一道题。 首先我们考虑将所有老鼠都进左边能进的且最优的洞。 然后有些老鼠其实是可以反悔的去选右边的洞,如果设第$i$只老鼠原来连$j$,反悔去连$k$,那么对答案的贡献就是$p_k-2x_i+p_j$ 可以发现这个东西对$k$独立,那么我们用一个堆维护即可。 但是一个洞也可以反悔不去选那个老鼠 阅读全文
摘要:
卡常题差评。 首先这个东西我们可以枚举中间那个然后扫描线,那么就变成右边不超过某个值的对左边的逆序对个数这个东西可以直接线段树$O(nlogn)$搞。 但是这样常数大的和*一样,我们考虑换一种方法。 我们枚举第一个点,那么其实后面的方案数就是大于第一个点随意排列的方案数减去三个点连续上升的方案数。 阅读全文