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

正题

题目链接: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=0n1aixinnn次项式,那么我们如果把nnnxxx的值直接带入求出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;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/319659.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

COSCon'18 面向全宇宙招募志愿者啦!

2018 中国开源年会&#xff08;COSCon18-China Open Source Conference 2018) 志愿者招募工作今日正式启动&#xff01;我们诚挚地欢迎开源社区的朋友们及高校的同学们加入志愿工作者团队&#xff0c;与国内外众多开源项目基金会、公司、大神等齐聚一堂&#xff0c;共襄盛举。招…

讲重点,看趋势——Microsoft Ignite 2018的回顾和展望

一年一度的微软技术大会——Microsoft Ignite 2018上周在奥兰多召开&#xff0c;目前已经落下帷幕。我没有去现场&#xff0c;但据说这次的盛况空前&#xff0c;创下微软之最。确实&#xff0c;这些年来&#xff0c;微软内部非常重视 Iginte&#xff0c;上至最高管理层&#xf…

算法工程师的危机

本文为沙漠之鹰第68篇原创文章9月20号讯飞AI同传语音造假的新闻刷爆科技圈&#xff0c;科大讯飞股价应声下跌3.89%&#xff08;不是65.3%&#xff0c;标题党文章害死人&#xff09;。 吃瓜群众纷纷感慨&#xff0c;有多少人工&#xff0c;就有多少智能。小编偷换概念玩的溜AI概…

Cover the Tree(2020多校第二场C)

Cover the Tree 文章目录题意&#xff1a;题解&#xff1a;代码题意&#xff1a; 一个无向树&#xff0c;选择最少数量的链子&#xff0c;能将树上所有边覆盖&#xff0c;答案不唯一 (1≤n≤2105&#xff09; 链子就是两点之间的边 看看样例 输入 5 1 2 1 3 2 4 2 5输出 2 2…

[模板]多项式全家桶小记(求逆,开根,ln,exp)

前言 这里的全家桶目前只包括了ln,exp,sqrtln,exp,sqrtln,exp,sqrt。还有一些类似于带余数模&#xff0c;快速幂之类用的比较少的有时间再更&#xff0c;NTTNTTNTT这种前置知识这里不多说。 还有一些基本的导数和微积分内容要了解&#xff0c;建议不懂的可以先去翻翻高二数学…

牛客网【每日一题】7月21日题目精讲—区间权值

来源&#xff1a;牛客网&#xff1a; 区间权值 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 1048576K&#xff0c;其他语言2097152K 64bit IO Format: %lld题目描述 输入描述: 第一行一个正整数 n 第二行 n 个正整数 a1…an 第三行 n 个正…

C# 函数式编程:LINQ

一直以来&#xff0c;我以为 LINQ 是专门用来对不同数据源进行查询的工具&#xff0c;直到我看了这篇十多年前的文章&#xff0c;才发现 LINQ 的功能远不止 Query。这篇文章的内容比较高级&#xff0c;主要写了用 C# 3.0 推出的 LINQ 语法实现了一套“解析器组合子&#xff08;…

2020牛客暑期多校训练营(第六场)

2020牛客暑期多校训练营&#xff08;第六场&#xff09; 额&#xff0c;睡了一下午&#xff0c;直接错过了比赛。。。 文章目录A African Sort题意&#xff1a;题解&#xff1a;代码&#xff1a;B Binary VectorC Combination of Physics and Maths题意&#xff1a;题解&#x…

P4001-[ICPC-Beijing 2006]狼抓兔子【对偶图】

正题 题目链接:https://www.luogu.com.cn/problem/P4001 题目大意 给出一个类似于 的网格图&#xff0c;求起点到终点的最小割。 解题思路 最小割直接跑网络流&#xff0c;然后发现dinicdinicdinic都过不了。&#xff08;好像加点玄学优化就能过&#xff09; 然后上点科技…

私有云方案——利用阿里云云解析实现DDNS

各位都是程序员&#xff0c;工作中是不是遇到个类似情况。在家里研究的一些开源代码或写的一些demo或试验代码&#xff0c;在工作中正好需要参考一下&#xff0c;但是在家里的电脑上。虽然这些都可以用云盘/网盘之类的来完成&#xff0c;源代码也可以托管到源码平台。但是这些都…

2020年首届算法竞赛网络挑战赛直播讲解课程

比赛链接 菜鸡的我&#xff0c;第四名。。 A 矛盾激化 题意 给定地图&#xff0c;这个地图有两个出口&#xff0c;现在我们需要求出从所有点到任意一个出口的距离中的最短路径的最大值 本题为输出答案题&#xff0c;给定你一种情况&#xff0c;然后输出它的答案 题解 如果…

光荣与梦想 | XMove动作捕捉系统(一)

今年春节回到老家&#xff0c;翻出了2011年春节时焊电路用过的松香和和硬盘角落里的代码。感慨万分&#xff0c;遂有此文。文章过长&#xff0c;分为两部分&#xff0c;本文为2010-2011年&#xff0c;XMove从第一代到第三代的故事。诞生于考研的第一代保研尚未确定&#xff0c;…

大型科技公司架构:中台模式的爱与恨

大型企业面对快速变化的市场形势&#xff0c;需要有像创业公司一样快速的反应能力。然而由于复杂的人员和层级关系&#xff0c;大企业做到“拥抱变化”是很困难的。传统以职能部门分治的树状组织架构&#xff0c;若一个底层员工有个好点子&#xff0c;就不得不自下而上说服管理…

牛客网 【每日一题】7月27日题目精讲—乌龟棋

来源&#xff1a;牛客网&#xff1a; 乌龟棋 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 131072K&#xff0c;其他语言262144K 64bit IO Format: %lld文章目录乌龟棋题目描述题解&#xff1a;代码&#xff1a;题目描述 小明过生日的时候&…

【费用流】摘取作物(jozj 3447)

正题 jozj 3447 题目大意 给你一个n*m的矩阵&#xff0c;每个位置有一个数&#xff0c;每一行每一列都只能选两个数&#xff0c;问你所选数字之和最大是多少 解题思路 对于该矩阵&#xff0c;我们可以建立一个网络图&#xff08;如下图&#xff09; 对于每一行建立建立一个…

如何在.NET Core控制台程序中使用依赖注入

背景介绍依赖注入(Dependency Injection), 是面向对象编程中的一种设计原则&#xff0c;可以用来减低代码之间的耦合度。在.NET Core MVC中我们可以在Startup.cs文件的ConfigureService方法中使用服务容器IServiceCollection注册接口及其实现类的映射。例如&#xff0c;当我们需…

牛客网 【每日一题】7月24日题目精讲—小A的柱状图

链接&#xff1a; 文章目录题目描述题解&#xff1a;代码&#xff1a;小A的柱状图时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld题目描述 柱状图是有一些宽度相等的矩形下端对齐以后…

在asp.net core2.1中添加中间件以扩展Swashbuckle.AspNetCore3.0支持简单的文档访问权限控制...

Swashbuckle.AspNetCore3.0 介绍一个使用 ASP.NET Core 构建的 API 的 Swagger 工具。直接从您的路由&#xff0c;控制器和模型生成漂亮的 API 文档&#xff0c;包括用于探索和测试操作的 UI。项目主页&#xff1a;https://github.com/domaindrivendev/Swashbuckle.AspNetCore划…

牛客网【每日一题】7月29日题目精讲—Max Power

来源&#xff1a;牛客网&#xff1a; Max Power 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 32768K&#xff0c;其他语言65536K 64bit IO Format: %lld题目描述 小卤蛋刚把dnf的技能点重新洗了一遍,现在他要重新加点,假设他的技能树一共有…

Swashbuckle.AspNetCore3.0的二次封装与使用

关于 Swashbuckle.AspNetCore3.0一个使用 ASP.NET Core 构建的 API 的 Swagger 工具。直接从您的路由&#xff0c;控制器和模型生成漂亮的 API 文档&#xff0c;包括用于探索和测试操作的 UI。项目主页&#xff1a;https://github.com/domaindrivendev/Swashbuckle.AspNetCore项…