正题

题目链接:https://www.luogu.com.cn/problem/CF917D


题目大意


给出nnn个点的一棵树,对于每个kkk求有多少个nnn个点的树满足与给出的树恰好有kkk条边重合。


解题思路

矩阵树有一个统计所有树边权和的和用法,就是把变量变成一个形如wx+1wx+1wx+1的多项式,这样一次项系数的值就表示了固定选择一条边的www时其他边的方案数之和。

这题我们可以同理,对于在给出数上的边是xxx,而其他就是111。那么最后询问xkx^kxk的系数就是答案了。

如果暴力套NTT\text{NTT}NTT不仅麻烦,而且跑的很慢过不了本题,考虑另一种求系数的方法。

我们假设答案是一个形如F(x)=∑i=0n−1aixiF(x)=\sum_{i=0}^{n-1}a_ix^iF(x)=∑i=0n−1​ai​xi的nnn次项式,那么我们如果把nnn个xxx的值直接带入求出FFF,然后用待定系数法的话我们就可以列出nnn个方程从而解出这个nnn项式的每一个系数。

时间复杂度O(n4)O(n^4)O(n4)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=110,P=1e9+7;
ll n,x[N],y[N];
ll power(ll x,ll b){ll ans=1;while(b){if(b&1)ans=ans*x%P;x=x*x%P;b>>=1;}return ans;
}
namespace Guass{ll a[N][N],b[N];void solve(){for(ll i=1;i<=n;i++){ll z=i;for(ll j=i;j<=n;j++)if(a[j][i]){z=j;break;}swap(a[i],a[z]);swap(b[i],b[z]);ll inv=power(a[i][i],P-2);for(ll j=i;j<=n;j++)a[i][j]=a[i][j]*inv%P;b[i]=b[i]*inv%P;for(ll j=i+1;j<=n;j++){ll rate=P-a[j][i];for(ll k=i;k<=n;k++)(a[j][k]+=rate*a[i][k]%P)%=P;(b[j]+=rate*b[i]%P)%=P;}}for(ll i=n;i>=1;i--){for(ll j=i+1;j<=n;j++)(b[i]+=P-b[j]*a[i][j]%P)%=P;}return;}
}
namespace Matrix{ll a[N][N];ll det(){ll f=1,ans=1;for(ll i=1;i<n;i++){ll z=i;for(ll j=i;j<n;j++)if(a[j][i]){if(j!=i)f=-f;z=j; break;}swap(a[i],a[z]);ll inv=power(a[i][i],P-2);ans=ans*a[i][i]%P;for(ll j=i;j<n;j++)a[i][j]=a[i][j]*inv%P;for(ll j=i+1;j<n;j++){ll rate=P-a[j][i];for(ll k=i;k<n;k++)(a[j][k]+=rate*a[i][k]%P)%=P;}}return ans*f;}void solve(ll w){for(ll i=1;i<=n;i++)for(ll j=1;j<=n;j++)a[i][j]=P-1;for(ll i=1;i<=n;i++)a[i][i]=n-1;for(ll i=1;i<n;i++){a[x[i]][x[i]]+=w-1;a[y[i]][y[i]]+=w-1;a[x[i]][y[i]]=P-w;a[y[i]][x[i]]=P-w;}Guass::b[w]=det();for(ll i=1,p=1;i<=n;i++,p=p*w%P)Guass::a[w][i]=p;return;}
}
signed main(){scanf("%lld",&n);for(ll i=1;i<n;i++)scanf("%lld%lld",&x[i],&y[i]);for(ll i=1;i<=n;i++)Matrix::solve(i);Guass::solve();for(ll i=1;i<=n;i++)printf("%lld ",Guass::b[i]);return 0;
}

CF917D-Stranger Trees【矩阵树定理,高斯消元】相关推荐

  1. [CF917D]Stranger Trees[矩阵树定理+解线性方程组]

    题意 给你 \(n\) 个点的无向完全图,指定一棵树 \(S\),问有多少棵生成树和这棵树的公共边数量为 \(k\in[0,n-1]\) \(n\leq 100\) 分析 考虑矩阵树定理,把对应的树边 ...

  2. HDU多校6 - 6836 Expectation(矩阵树定理+高斯消元求行列式)

    题目链接:点击查看 题目大意:给出一张由 n 个点和 m 条边组成的无向图,对于任意一个生成树,其权值为 n - 1 条边的边权进行二进制的 and 运算,现在需要在图中任意选择一个生成树,问期望权值 ...

  3. SP104 Highways (矩阵树,高斯消元)

    矩阵树定理裸题 //#include <iostream> #include <cstdio> #include <cstring> #include <al ...

  4. SPOJ HIGH Highways ——Matrix-Tree定理 高斯消元

    [题目分析] Matrix-Tree定理+高斯消元 求矩阵行列式的值,就可以得到生成树的个数. 至于证明,可以去看Vflea King(炸树狂魔)的博客 [代码] #include <cmath ...

  5. 矩阵与高斯消元【矩阵乘法,高斯消元求线性方程组,求行列式】 全网最详,附例题与姊妹篇 一万三千字详解

    (详解)矩阵快速幂详解与常见转移矩阵的构造_秦小咩的博客-CSDN博客_矩阵快速幂转移矩阵 目录 矩阵乘法 矩阵快速幂 伪代码模板 例题一 例题2 例题三 例题四 高斯消元 整形高斯消元 浮点型高斯消 ...

  6. BZOJ 2466 [中山市选2009]树(高斯消元)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2466 [题目大意] 给定一棵树,每个节点有一盏指示灯和一个按钮.如果节点的按扭被按了, ...

  7. Luogu P4336 [SHOI2016]黑暗前的幻想乡(容斥,矩阵树定理,子集反演)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Luogu P4336 [SHOI2016]黑暗前的幻想乡(容斥,矩阵树定理) Problem n≤1 ...

  8. 【学习笔记】矩阵树定理(Matrix-Tree)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 一.矩阵树定理 二.常用定理 三.例题 1. Luogu P6178 [模板]Matrix-Tr ...

  9. 洛谷 P3211 [HNOI2011]XOR和路径(推dp+高斯消元)

    传送门 首先,异或的话直接讨论不好讨论,那么我们可以按位讨论,对于每一位讨论出来一个结果,然后将结果相加就好了. 然后考虑怎么讨论一位上的结果. 我们可以设出来一个dp方程:f(i)表示i到n的异或和 ...

最新文章

  1. 理解Kalman滤波的使用
  2. Dalvik/ART(ANDROID)中的多线程机制(2)
  3. 解决SQL单用户模式不能转为多用户模式
  4. ThoughtWorks技术雷达专区
  5. ZKEACMS for .Net Core 深度解析
  6. 什么事计算机事实性知识,《人工智能》复习要点
  7. in-place数据交换
  8. Weblogic12c T3 协议安全漏洞分析【CVE-2020-14645 CVE-2020-2883 CVE-2020-14645】
  9. julia 编程语言_Julia编程语言中的变量
  10. 红杉中国2021企业数字化年度指南:企业如何制胜数字化浪潮?
  11. Android2.2+opencv3.1配置实现
  12. windows电脑桌面透明便签待办分类怎么添加
  13. perl oracle ppm,perl – 为什么没有找到ppm:命令?
  14. 单反相机坏点和噪点测试软件,坏点和噪点测试程序(照片检测工具)
  15. Intel核显--OpenCL环境--Linux
  16. 使用calibre制作带目录的mobi电子书
  17. UEFI之PEI阶段
  18. Swift vs. Kotlin 漫谈之扩展篇
  19. c语言判断是否以某个字符串开头,以某个字符串结尾
  20. 红米手机使用应用沙盒动态修改imei信息

热门文章

  1. mysql二阶段提交有什么问题_MySQL的事务两阶段提交的技术有什么意义?
  2. 计算机管理无法连接虚拟磁盘服务,虚拟磁盘服务错误怎么操作【图文教程】
  3. 配置yml_dctc:生成docker-compose.yml配置的工具
  4. linux编译redis打包,linux下下载redis,并且编译
  5. linux强大功能,linux grep和find 的强大功能
  6. acwing2019. 拖拉机(最短路径)
  7. zynq网络时钟控制寄存器_ZYNQ笔记(6):普通自定义IP封装实现PL精准定时中断...
  8. 后端学习 - Redis
  9. Java面向对象编程(中级)
  10. 素数-试除法和埃式筛选法模板