bzoj 4596: [Shoi2016]黑暗前的幻想乡
这个题貌似奶了一口trump,,,
本来看到一个公司一条边,而且N是那么科学,肯定要容斥了,然后蛋疼的想应该怎么求生成树。。
本来一开始乱说了个矩阵树定理,然而忘了,就像奇奇怪怪的东西了。。然并卵,正解就是矩阵树定理,IQ--
需要注意的是,求解行列式和一般的线性方程是不一样的,行列式是消去本行,然后交换,变号。。。
1 #include <bits/stdc++.h> 2 #define LL long long 3 using namespace std; 4 inline int ra() 5 { 6 int x=0,f=1; char ch=getchar(); 7 while (ch<'0' || ch>'9') {if (ch=='-') f=-1; ch=getchar();} 8 while (ch>='0' && ch<='9') {x=x*10+ch-'0'; ch=getchar();} 9 return x*f; 10 } 11 12 const int mod=1e9+7; 13 14 LL g[20][20]; 15 int n; 16 vector<pair<int , int > > orz[20]; 17 18 int Gauss() 19 { 20 LL ans=1; 21 for (int i=1; i<n; i++) 22 { 23 for (int j=i+1; j<n; j++) 24 while (g[j][i]) 25 { 26 LL t=g[i][i]/g[j][i]; 27 for (int k=i; k<n; k++) 28 g[i][k]=(g[i][k]-g[j][k]*t)%mod; 29 swap(g[i],g[j]); 30 ans=-ans; 31 } 32 ans=ans*g[i][i]%mod; 33 if (!ans) return 0; 34 } 35 return (ans+mod)%mod; 36 } 37 38 int main(int argc, char const *argv[]) 39 { 40 n=ra(); 41 for (int i=1; i<n; i++) 42 { 43 int m=ra(); 44 for (int j=1; j<=m; j++) 45 { 46 int x=ra(),y=ra(); 47 orz[i].push_back(make_pair(x,y)); 48 } 49 } 50 int ans=0; 51 for (int i=0; i<1<<(n-1); i++) 52 { 53 int cnt=0; memset(g,0,sizeof(g)); 54 for (int j=1; j<n; j++) 55 if ((i>>(j-1))&1) 56 { 57 for (int k=0; k<orz[j].size(); k++) 58 { 59 int x=orz[j][k].first,y=orz[j][k].second; 60 g[x][x]++; g[y][y]++; 61 g[x][y]--; g[y][x]--; 62 } 63 cnt++; 64 } 65 if ((n-cnt)&1) ans=(ans+Gauss())%mod; else ans=(ans-Gauss()+mod)%mod; 66 } 67 printf("%d\n",ans); 68 return 0; 69 }
转载于:https://www.cnblogs.com/ccd2333/p/6800004.html
bzoj 4596: [Shoi2016]黑暗前的幻想乡相关推荐
- ●BZOJ 4596 [Shoi2016]黑暗前的幻想乡
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4596 题解: 容斥,矩阵树定理,矩阵行列式 先说说容斥:(一共有 N-1个公司) 令 f[i ...
- Luogu P4336 [SHOI2016]黑暗前的幻想乡(容斥,矩阵树定理,子集反演)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Luogu P4336 [SHOI2016]黑暗前的幻想乡(容斥,矩阵树定理) Problem n≤1 ...
- P4336 [SHOI2016]黑暗前的幻想乡
题目 P4336 [SHOI2016]黑暗前的幻想乡 做法 每种颜色恰好一条边,有点难处理啊 根据套路,数据范围这么小,容斥一下所有的情况就可以了 对每种颜色进行状压,表这次只能选这些颜色,做\(n- ...
- 【BZOJ4596】[Shoi2016]黑暗前的幻想乡 容斥+矩阵树定理
[BZOJ4596][Shoi2016]黑暗前的幻想乡 Description 幽香上台以后,第一项措施就是要修建幻想乡的公路.幻想乡有 N 个城市,之间原来没有任何路.幽香向选民承诺要减税,所以她打 ...
- [BZOJ4596][Shoi2016]黑暗前的幻想乡-Matrix Tree 矩阵树定理
黑暗前的幻想乡 Description 四年一度的幻想乡大选开始了,最近幻想乡最大的问题是很多来历不明的妖怪涌入了幻想乡,扰乱了幻想乡昔日的秩序.但是幻想乡的建制派妖怪(人类)博丽灵梦和八云紫等人整日 ...
- BZOJ4596:[SHOI2016]黑暗前的幻想乡——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4596 https://www.luogu.org/problemnew/show/P4336#su ...
- SHOI2016 黑暗前的幻想乡
题目链接:戳我 幻想乡是个什么东西??(逃 矩阵树定理+容斥 就是设\(dp[i]\)表示至多i个公司修建道路,那么我们有\(ans=dp[n-1]-dp[n-2]+dp[n-3]......\)ba ...
- [luogu3244 SHOI2016] 黑暗前的幻想乡(容斥原理+矩阵树定理)
传送门 Description 给出 n 个点和 n−1 种颜色,每种颜色有若干条边.求这张图多少棵每种颜色的边都出现过的生成树,答案对 109+7 取模. Input 第一行包含一个正整数 N(N& ...
- 洛谷 P4336 [SHOI2016] 黑暗前的幻想乡 题解
前置芝士 Kirchhoff 矩阵树定理 Kirchhoff矩阵树定理解决了一个问题:对于一个确定的无向图,其究竟有多少个生成树? 对于一个无向图,我们拥有其邻接矩阵 A\bf{A}A. 这里的邻接矩 ...
最新文章
- 两款接口测试工具推荐
- 急速JavaScript全栈教程
- SQL server 2000建立远程连接(局域网)
- C++ decltype关键字
- 织梦dedecms search.php注入漏洞exp,DedeCms V57 plus/search.php 文件SQL注射0day漏洞
- web前端细解cookie那些事
- JS在页面限制checkbox最大复选数
- cudnn版本_踩过cuda、cudnn的坑[持续更新]
- android studio创建9.patch图片,使用时出现Error: Duplicate resources
- C++中main函数的返回类型必须是int
- 选择排序是外面循环的array[i]与内循环的array[j]比较。冒泡排序是内循环的相邻两个值做比较修改...
- 递归加载无限级分类,虽然我觉得效率不太好。
- dell12v18a怎么改_拆修DELL 12V 18A电源!
- Matlab 仿真——直流电机速度控制(5)通过频域分析进行控制器设计
- html 网页地图集制作ECHARTS,在页面使用echarts的地图(解决地图不完整)
- 计算机异常断电后无法启动,电脑突然断电后开不了机怎么办【解决方法】
- 不需要任何化学药剂的污水处理设备(微纳米气泡技术)
- QMAIL简明安装(转)
- 实验(三):单片机I/O口实验-模拟开关灯
- 开源阅读书源_最好用的阅读软件之一
热门文章
- Linux下最快速共享目录的方法
- jquery实现复选框checkbox全选,取消全选
- Linux虚拟机复制,网卡找不到
- 8月20日全球六大国际域名解析量变化情况统计报告
- java 生成静态html的一段代码
- 通过讲课来建立自己的知识系统
- html如何整齐排列选择框,html – 如何均匀地排列多个内嵌块元素?
- java堆栈类在哪个包里_Java堆栈Stack类的使用
- c语言在单行文本上删除子串,一道比较简单的题——PTA基础编程题目集 7-29 删除字符串中的子串 C语言试解-Go语言中文社区...
- lsof deleted java,lsof__强大的系统监控、诊断命令