BZOJ4894:天赋(矩阵树定理)
Description
Input
Output
第一行一个整数,问题所求的方案数。
Sample Input
01111111
00101001
01010111
01001111
01110101
01110011
01111100
01110110
Sample Output
72373
Solution
终于来填矩阵树的坑了……
其实也没啥难的,就是高斯消元解个行列式就完了……(行列式的性质可以看这里)
这个题其实是让你求以$1$为根的外向树生成树个数。
无向图生成树:度数矩阵-邻接矩阵
有向图外向生成树:入度矩阵-邻接矩阵
有向图内向生成树:出度矩阵-邻接矩阵
把这个矩阵删掉一行一列然后求出的行列式的值就是生成树个数。
注意有向图的生成树需要删除根所在的行列来计算行列式。
Code
- #include<iostream>
- #include<cstdio>
- #include<cstdlib>
- #define N (309)
- #define LL long long
- #define MOD (1000000007)
- using namespace std;
- LL n,f[N][N];
- char s[N];
- LL inv(LL a)
- {
- LL ans=,b=MOD-;
- while (b)
- {
- if (b&) ans=ans*a%MOD;
- a=a*a%MOD; b>>=;
- }
- return ans;
- }
- void Gauss(LL n)
- {
- int w=,ans=;
- for (int i=; i<=n; ++i)
- {
- int num=i;
- for (int j=i; j<=n; ++j)
- if (abs(f[j][i])>abs(f[num][i])) num=j;
- if (num!=i) swap(f[num],f[i]), w=-w;
- for (int j=i+; j<=n; ++j)
- {
- int t=f[j][i]*inv(f[i][i])%MOD;
- for (int k=i; k<=n; ++k)
- f[j][k]=(f[j][k]-t*f[i][k])%MOD;
- }
- }
- for (int i=; i<=n; ++i)
- ans=ans*f[i][i]%MOD;
- ans=(ans*w%MOD+MOD)%MOD;
- printf("%lld\n",ans);
- }
- int main()
- {
- scanf("%lld",&n);
- for (int i=; i<n; ++i)
- {
- scanf("%s",s);
- for (int j=; j<n; ++j)
- f[i][j]-=s[j]-'';
- }
- for (int i=; i<n; ++i)
- for (int j=; j<n; ++j)
- if (i!=j && f[i][j]==-) f[j][j]++;
- Gauss(n-);
- }
BZOJ4894:天赋(矩阵树定理)的更多相关文章
- 【bzoj4894】天赋 矩阵树定理
题目描述 小明有许多潜在的天赋,他希望学习这些天赋来变得更强.正如许多游戏中一样,小明也有n种潜在的天赋,但有一些天赋必须是要有前置天赋才能够学习得到的.也就是说,有一些天赋必须是要在学习了另一个天赋 ...
- 【BZOJ4894】天赋(矩阵树定理)
[BZOJ4894]天赋(矩阵树定理) 题面 BZOJ Description 小明有许多潜在的天赋,他希望学习这些天赋来变得更强.正如许多游戏中一样,小明也有n种潜在的天赋,但有 一些天赋必须是要有 ...
- @总结 - 7@ 生成树计数 —— matrix - tree 定理(矩阵树定理)与 prüfer 序列
目录 @0 - 参考资料@ @0.5 - 你所需要了解的线性代数知识@ @1 - 矩阵树定理主体@ @证明 part - 1@ @证明 part - 2@ @证明 part - 3@ @证明 part ...
- [spoj104][Highways] (生成树计数+矩阵树定理+高斯消元)
In some countries building highways takes a lot of time... Maybe that's because there are many possi ...
- BZOJ 4766: 文艺计算姬 [矩阵树定理 快速乘]
传送门 题意: 给定一个一边点数为n,另一边点数为m,共有n*m条边的带标号完全二分图$K_{n,m}$ 求生成树个数 1 <= n,m,p <= 10^18 显然不能暴力上矩阵树定理 看 ...
- bzoj 4596 [Shoi2016]黑暗前的幻想乡 矩阵树定理+容斥
4596: [Shoi2016]黑暗前的幻想乡 Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 559 Solved: 325[Submit][Sta ...
- 【LOJ#6072】苹果树(矩阵树定理,折半搜索,容斥)
[LOJ#6072]苹果树(矩阵树定理,折半搜索,容斥) 题面 LOJ 题解 emmmm,这题似乎猫讲过一次... 显然先\(meet-in-the-middle\)搜索一下对于每个有用的苹果数量,满 ...
- 2019.01.02 bzoj2467: [中山市选2010]生成树(矩阵树定理)
传送门 矩阵树定理模板题. 题意简述:自己看题面吧太简单懒得写了 直接构建出这4n4n4n个点然后按照题面连边之后跑矩阵树即可. 代码: #include<bits/stdc++.h> # ...
- [CF917D]Stranger Trees[矩阵树定理+解线性方程组]
题意 给你 \(n\) 个点的无向完全图,指定一棵树 \(S\),问有多少棵生成树和这棵树的公共边数量为 \(k\in[0,n-1]\) \(n\leq 100\) 分析 考虑矩阵树定理,把对应的树边 ...
随机推荐
- Eclipse 4.3 Kepler最快汉化方法
eclipse 4.3汉化 eclipse 4.3 ---kepler已经于2013年6月26日发布主要版本,详见:eclipse in wikipedia 1.上eclipse官网:http:/ ...
- JS 随机排序算法
https://www.cnblogs.com/getdaydayup/p/6592154.html 使用JS编写一个方法 让数组中的元素每次刷新随机排列 法一: var arr =[1,2,3,4] ...
- HDU2255(KB10-K 二分图最大权匹配)
奔小康赚大钱 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- 关于HTML框架(frameset)的一些基本用法
frameset 定义 W3C是这样定义frameset框架的,通过使用框架,你可以在同一个浏览器窗口中显示不止一个页面.每份HTML文档称为一个框架,并且每个框架都独立于其他的框架.注意,这是HTM ...
- windows安装mysql数据库
一.下载安装包.进入mysql官网https://www.mysql.com/ 二.打开安装包安装 以上步骤直接点击next即可,遇到配置密码就配置下
- 安装ArcGIS Enterprise WebGIS (Portal ArcGIS Server DataStore ) 系统后如何应对网络环境的配置修改
客户往往在部署完ArcGIS WebGIS系统后,由于需要满足业务或者网络管理的要求,需要修改系统的网络环境的配置,下文将从常见的几个场景来讲述如何去应对这些变动. 1.网络IP地址变动 由于在部署W ...
- adb shell 操作sqlite数据库
程序中数据库文件路径在/data/data/<package name>/databases/ adb shell 进入adb命令行 ls 列出当前文件夹下所有文件 假设有一个名为a ...
- openCV 视频分解及合成
1. 视频分解 import cv2 # ************************** # 分解视频 cap=cv2.VideoCapture('1.mp4')#获取一个视频cap isOpe ...
- Android--动态改变ImageView的亮度
//改变图片的亮度方法 0--原样 >0---调亮 <0---调暗 private void changeLight(ImageView imageView, int brightness ...
- 耐克的定制页用canvas如何实现....跪求前端大神指点。
选择鞋子的鞋底 鞋底会变色,也可以添加自己定制的id,这个东西看的是用canvas做的,但是小弟确实不知道怎么去做,求大神指点一二,不胜感激! nike的定制页地址:http://store.nike ...