题解-Codeforces917D Stranger Trees】的更多相关文章

Problem \(\mathrm{Codeforces~917D}\) 题意概要:一棵 \(n\) 个节点的无向树.问在 \(n\) 个点的完全图中,有多少生成树与原树恰有 \(k\) 条边相同,对于任意 \(k\in[0,n)\) 输出答案,答案取模. \(2\leq n\leq 100\) Solution 这题思路新奇啊,智商又能上线了 由于暴力为枚举所有生成树,发现枚举所有生成树的高效算法为矩阵树定理,而且数据范围恰好在矩阵树复杂度接受范围内 由于矩阵树计算的是所有 生成树边权积 之和…
$n \leq 100$的完全图,对每个$0 \leq K \leq n-1$问生成树中与给定的一棵树有$K$条公共边的有多少个,答案$mod \ \ 1e9+7$. 对这种“在整体中求具有某些特性的部分”,可以通过把“特性”强行复制加入“整体”来考察新的整体与部分的关系. 说人话,在这里是要求完全图中与给定树有若干同样边的生成树,那尝试把这棵树复制一份进完全图再看生成树.可以发现,这样之后,新的完全图的生成树个数就是 $\sum_{i=0}^{n-1}2^i*[number \ \ of \…
[CF917D]Stranger Trees 题意:给你一棵n个点的树,对于k=1...n,问你有多少有标号的n个点的树,与给出的树有恰好k条边相同? $n\le 100$ 题解:我们先考虑容斥,求出和给出的树至少有k个点相同的树的数量.我们先选出原树中的k条边,然后剩下的边随便连.选出k条边后,原树被分成n-k个连通块,设其大小分别为$siz_1,siz_2...siz_{n-k}$.那么剩下的边随便连的方案数是多少呢?我们不妨把每个连通块看成一个点,答案变成n个点的完全图的生成树个数,根据P…
CF917D Stranger Trees 题目描述 给定一个树,对于每个\(k=0,1\cdots n-1\),问有多少个生成树与给定树有\(k\)条边重合. 矩阵树定理+高斯消元 我们答案为\(f_k\).假设我们呢将原树上的边权设为\(x\),其他的边权设为\(1\),那么我们做一次矩阵树定理求出来的东西就是\(\displaystyle \sum_{i=0}^{n-1}f_i x^i\).于是我们找\(n\)个不同的\(x\),然后高斯消元就行了. 代码: #include<bits/s…
生成树计数问题用矩阵树定理来考虑. 矩阵树定理求得的为\(\sum\limits_T\prod\limits_{e\in T}v_e\),也就是所有生成树的边权积的和. 这题边是不带权的,应用矩阵树定理前,我们必须考虑给每条边赋上一个权值. 可以从多项式的角度来考虑解决生成树和给定树有\(k\)条边重复这一条件,将给定树的边边权赋为\(x\),其余边赋为\(1\),那么应用矩阵树定理后得到的多项式中第\(k\)次项\(x^k\)的系数即为恰好有\(k\)条边重复的方案数. 发现直接代入多项式来求…
题目链接 正解:矩阵树定理+拉格朗日插值. 一下午就搞了这一道题,看鬼畜英文题解看了好久.. 首先这题出题人给了两种做法,感觉容斥+$prufer$序列+$dp$的做法细节有点多所以没看,然而这个做法似乎更难想.. 我们先构造一个函数$f(x)$,表示用一个完全图和$x-1$棵原树的边,构成的生成树的方案数. 也就是说,原树的每条边复制成$x$条,不在原树的边都变成一条边,求这个图的生成树的方案数. 然后我们可以发现,这个方案数实际上就等于$\sum_{i=0}^{n-1}x^{i}*ans_{…
题目 看题解的时候才突然发现\(zky\)讲过这道题啊,我现在怕不是一个老年人了 众所周知矩阵树求得是这个 \[\sum_{T}\prod_{e\in T}w_e\] 而我们现在的这个问题有些鬼畜了,给定一棵树,求和这棵树有\(k\)条公共边的生成树个数 我们如何区分出和原生成树有几条边呢,容斥显然不是很可做,于是之后就不会啦 看了题解发现这是神仙题,引用潮子名言我可能这辈子是做不出来了 对于不在给定生成树里的边\(w_e\)我们设\(w_e=1\),对于在生成树里的边我们将其设成\(w_e=x…
题目链接 CF917D:https://codeforces.com/problemset/problem/917/D TopCoder13369:https://community.topcoder.com/stat?c=problem_statement&pm=13369 题解 首先分析 CF917D. 我们考虑能否将树上的边的贡献特殊表现出来. 记原树为 \(T\),我们构造一幅 \(n\) 个结点的无向完全图,并设置一个值 \(x\),对于无向边 \((u, v)\),其权值 \(w_{…
Codeforces 题目传送门 & 洛谷题目传送门 刚好看到 wjz 在做这题,心想这题之前好像省选前做过,当时觉得是道挺不错的题,为啥没写题解呢?于是就过来补了,由此可见我真是个大鸽子(( 跑题了跑题了-- 这里提供两种解法: Algorithm 1. 注意到"恰好"二字有点蓝瘦,因此套路地想到二项式反演,也就说我们钦定 \(k\) 条边必须与原树中的边重合,其余边可以随便连的方案数,我们假设这些与原树中的边重合的边构成的集合为 \(E'\),那么 \(E'\) 中显然包含…
1.题目描述 2.问题分析 将叶子节点的值放入vector,然后比较. 3.代码 bool leafSimilar(TreeNode* root1, TreeNode* root2) { vector<int> v1; vector<int> v2; findLeaf(root1, v1); findLeaf(root2, v2); return v1 == v2; } void findLeaf(TreeNode *root, vector<int> &v)…