BSOJ在哪我也不知道 没有链接. 对于有标号无根树的统计和有度数限制 一般采用prufer序列. 根据prufer序列 容易知道 某个点的出现次数+1为当前点的度数. 对于这道题 考虑设f[i][j]表示前i个点填了prufer序列j个位置时的方案数. 不过这样做存在的问题是 最后我们要求恰好k个点形成的长度为k-2的prufer序列的方案数. 如果设这个状态 这个状态到底有多少个点我们无从得知. 所以需要再开一维状态 表示当前使用了k个点. 转移 :由于状态相当于答案 对于j个位置时相当于只…
I.导入 求长度为\(\text{len}\)的包含给定连续子串\(\text{T}\)的 0/1 串的个数.(\(|T|<=15\)) 通常来说这种题目应该立刻联想到状压 DP 与取反集--这样就不用考虑大量重复情况的容斥问题.设\(f_{i,S}\)表示前\(i\)个字符.最后\(|T|\)个字符为\(S\).不包含给定连续子串的情况数,状态转移方程简单不述.时间复杂度 \(\Theta(2^{|T|}\text{len})\). II.巧妙利用利用失配树的序列DP 上述算法的时间复杂度相当…
题目描述 有\(n\)点,每个点有度数限制,\(\forall i(1\leq i\leq n)\),让你选出\(i\)个点,再构造一棵生成树,要求每个点的度数不超过度数限制.问你有多少种方案. \(n\leq 100\) 题解 考虑prufer序列. 每个prufer序列唯一对应一棵无根树. 设\(f_{i,j,k}\)为前\(i\)个点选了\(j\)个点,目前的prufer序列长度为\(k\)的方案数. 每次枚举下一个点选不选和度数 不选:\(f_{i+1,j,k}+=f_{i,j,k}\)…
BSOJ我也不知道在哪. 容易想到容斥. 考虑不合法的方案 想到强制某个点的度数为限制即可. 这样就变成了了总方案-一个不合法+两个不合法-3个......的模型了. 坑点 当强制两个相同的点时 方案数为0. 当 序列长度>n-2的时候 方案数为0. 注意一些边界条件啥的.这样的话利用爆搜就很好写了. const ll MAXN=1000010; ll n,len,m; ll ans,fac[MAXN],inv[MAXN]; ll w[MAXN],du[MAXN],vis[MAXN]; inli…
LINK:CountTables 神题! 首先单独考虑行不同的情况 设\(f_i\)表示此时有i列且 行都不同. 那么显然有 \(f_i=(c^i)^\underline{n}\) 考虑设\(g_i\)表示此时有i列且 行列都不同. 考虑将\(g_i\)和\(f_i\)联系起来. 那么对于 \(f_m\) 考虑其有k列是本质不同的 那么有m-k列重复出现的 考虑把这m-k列给缩起来就变成了 n行k列 且行列都不同的矩阵了. 而且可以发现对于n行k列 且行列都不同的矩阵和有k列本质不同且不讲究分配…
树 Time Limit: 10 Sec  Memory Limit: 256 MB Description Input Output Sample Input 3 2 2 1 Sample Output   3 3 2 HINT Solution 由于是带标号的无根树的计数,于是我们运用prufer编码的性质来解题. prufer编码的几个性质: 1.对于大小为s的树,prufer编码是一个长度为 s-2 的序列: 2.i在序列中出现的次数<deg[i]: 3.一个prufer编码表示一棵树.…
题目链接 \(Description\) 给定一棵边带权的树.求删掉K条边.再连上K条权为0的边后,新树的最大直径. \(n,K\leq3\times10^5\). \(Solution\) 题目可以转化为,求树上不相交的\(k+1\)条链,使得它们的边权和最大(已不想再说什么了..). 选择链数越多,答案增长得越慢,减少的时候还会减少得越快,即形成了一个\(K-Ans_K\)的上凸包:而如果没有链数的限制,DP是很容易的(有链数得加一维\(k\)). 带权二分.DP用\(f[x][0/1/2]…
$ \color{#0066ff}{ 题目描述 }$ 小L 最近沉迷于塞尔达传说:荒野之息(The Legend of Zelda: Breath of The Wild)无法自拔,他尤其喜欢游戏中的迷你挑战. 游戏中有一个叫做"LCT" 的挑战,它的规则是这样子的:现在有一个N 个点的 树(Tree),每条边有一个整数边权vi ,若vi >= 0,表示走这条边会获得vi 的收益:若vi < 0 ,则表示走这条边需要支付- vi 的过路费.小L 需要控制主角Link 切掉(…
题目:https://www.luogu.org/problemnew/show/P4383 关于带权二分:https://www.cnblogs.com/flashhu/p/9480669.html 自己只能想到 “如果把负边看作不存在,那么分出的连通块的直径一定可以被整个连进最终路径里”.然后就不知道连通块不是恰好 K+1 个怎么办,且也不知道是不是对的…… 原来可以直接把问题看成 “选出恰好 K+1 条不相交路径” .这样也考虑到了 “恰好 K 条” 的限制,并且好像挺对的. 结果自己还是…
题目大意:给定一棵树中全部点的度数,求有多少种可能的树 Prufer序列.详细參考[HNOI2008]明明的烦恼 直接乘会爆long long,所以先把每一个数分解质因数.把质因数的次数相加相减.然后再乘起来 注意此题无解须要输出0 当n!=1&&d[i]==0时 输出0 当Σ(d[i]-1)!=n-2时输出0 写代码各种脑残--竟然直接算了n-2没用阶乘-- #include<cstdio> #include<cstring> #include<iostre…