BZOJ 4596: [Shoi2016]黑暗前的幻想乡(容斥+Matrix_Tree)

时间:2022-11-13 21:18:09

传送门

解题思路

  看到计数想容斥--\(from\) \(shadowice1984\)大爷。首先求出原图的生成树个数比较容易,直接上矩阵树定理,但这样会多算一点东西,会把\(n-2\)个公司的多算进去,那我们就减掉\(n-2\)个公司的生成树个数,然后发现少算了\(n-3\)的生成树个数...以此类推。所以就容斥一下,然后用矩阵树定理就行了。时间复杂度\(O(2^(n-1)*n^3*log(MOD)\)。

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#define int long long using namespace std;
const int MAXN = 18;
const int MOD = 1e9+7;
typedef long long LL; inline int rd(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)) {f=ch=='-'?0:1;ch=getchar();}
while(isdigit(ch)) {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
return f?x:-x;
} struct Edge{
int u,v;
}edge[MAXN][MAXN*MAXN/2]; int m[MAXN],n,ans;
int f[MAXN][MAXN]; inline void add(int x,int y){
f[x][x]++;f[y][y]++;f[x][y]--;f[y][x]--;
} inline int Matrix_Tree(){
int t,ret=1;
for(int i=1;i<n;i++){
for(int j=i+1;j<n;j++)
while(f[j][i]){
t=f[i][i]/f[j][i];
for(int k=i;k<n;k++) f[i][k]=(f[i][k]-(LL)t*f[j][k]%MOD+MOD)%MOD;
ret=-ret;swap(f[i],f[j]);
}
ret=(LL)ret*f[i][i]%MOD;ret=(ret+MOD)%MOD;
}
return (ret+MOD)%MOD;
} signed main(){
n=rd();
for(int i=1;i<n;i++){
m[i]=rd();
for(int j=1;j<=m[i];j++)
edge[i][j].u=rd(),edge[i][j].v=rd();
}
for(int i=(1<<(n-1))-1;i;i--){
memset(f,0,sizeof(f));
for(int j=1;j<=n;j++)if((1<<(j-1))&i)
for(int k=1;k<=m[j];k++)
add(edge[j][k].u,edge[j][k].v);
ans+=((n-__builtin_popcount(i))&1)?(Matrix_Tree()):(-Matrix_Tree());
ans=(ans+MOD)%MOD;
}
printf("%lld",ans);
return 0;
}

BZOJ 4596: [Shoi2016]黑暗前的幻想乡(容斥+Matrix_Tree)的更多相关文章

  1. bzoj 4596 &lbrack;Shoi2016&rsqb;黑暗前的幻想乡 矩阵树定理&plus;容斥

    4596: [Shoi2016]黑暗前的幻想乡 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 559  Solved: 325[Submit][Sta ...

  2. &lbrack;ZJOI2016&rsqb;小星星&amp&semi;&lbrack;SHOI2016&rsqb;黑暗前的幻想乡&lpar;容斥&rpar;

    这两道题思路比较像,所以把他们放到一块. [ZJOI2016]小星星 题目描述 小Y是一个心灵手巧的女孩子,她喜欢手工制作一些小饰品.她有n颗小星星,用m条彩色的细线串了起来,每条细线连着两颗小星星. ...

  3. 【BZOJ4596】&lbrack;Shoi2016&rsqb;黑暗前的幻想乡 容斥&plus;矩阵树定理

    [BZOJ4596][Shoi2016]黑暗前的幻想乡 Description 幽香上台以后,第一项措施就是要修建幻想乡的公路.幻想乡有 N 个城市,之间原来没有任何路.幽香向选民承诺要减税,所以她打 ...

  4. BZOJ 4596&colon; &lbrack;Shoi2016&rsqb;黑暗前的幻想乡

    Sol 容斥原理+Matrix-Tree定理.容斥跟小星星那道题是一样的,然后...直接Matrix-Tree定理就可以了... 复杂度\(O(2^{n-1}n^3)\) PS:调了好久啊QAQ 明明 ...

  5. ●BZOJ 4596 &lbrack;Shoi2016&rsqb;黑暗前的幻想乡

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4596 题解: 容斥,矩阵树定理,矩阵行列式 先说说容斥:(一共有 N-1个公司) 令 f[i ...

  6. bzoj 4596&colon; &lbrack;Shoi2016&rsqb;黑暗前的幻想乡【容斥原理&plus;矩阵树定理】

    真是简单粗暴 把矩阵树定理的运算当成黑箱好了反正我不会 这样我们就可以在O(n^3)的时间内算出一个无向图的生成树个数了 然后题目要求每个工程队选一条路,这里可以考虑容斥原理:全选的方案数-不选工程队 ...

  7. 【BZOJ 4596】 4596&colon; &lbrack;Shoi2016&rsqb;黑暗前的幻想乡 (容斥原理&plus;矩阵树定理)

    4596: [Shoi2016]黑暗前的幻想乡 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 324  Solved: 187 Description ...

  8. 【BZOJ】4596&colon; &lbrack;Shoi2016&rsqb;黑暗前的幻想乡

    [题意]给定n个点的无向完全图,有n-1个公司各自分管一部分路,要求所有公司都有修路的生成树数.n<=17. [算法]容斥原理+生成树计数(矩阵树定理) [题解]每个生成树方案是一个公司有无修路 ...

  9. 洛谷 P4336 黑暗前的幻想乡 —— 容斥&plus;矩阵树定理

    题目:https://www.luogu.org/problemnew/show/P4336 当作考试题了,然而没想出来,呵呵. 其实不是二分图完美匹配方案数,而是矩阵树定理+容斥... 就是先放上所 ...

随机推荐

  1. &lbrack;宽度优先搜索&rsqb; HDU 1372 Knight Moves

    Knight Moves Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tot ...

  2. Compound Interest Calculator3&period;0

    Compound Interest Calculator3.0 1.利率这么低,复利计算收益都这么厉害了,如果拿100万元去买年报酬率10%的股票,若一切顺利,过多长时间,100万元就变成200万元呢 ...

  3. vb&period;net中常用键值

    可在代码中的任何地方用下列常数代替实际值: 常数 值 描述 vbKeyLButton 0x1 鼠标左键 vbKeyRButton 0x2 鼠标右键 vbKeyCancel 0x3 CANCEL 键 v ...

  4. 【爆料】-《亚伯大学毕业证书》Aber一模一样原件

    ☞亚伯大学毕业证书[微/Q:865121257◆WeChat:CC6669834]UC毕业证书/联系人Alice[查看点击百度快照查看][留信网学历认证&博士&硕士&海归&am ...

  5. bzoj-1179&lpar;缩点&plus;最短路&rpar;

    题意:中文题面 解题思路:因为他能重复走且边权都正的,那么肯定一个环的是必须走完的,所以先缩点,在重新建一个图跑最长路 代码: #include<iostream> #include&lt ...

  6. vue2&period;0插件--loading

    loading效果很常见,常见到我们任何一个项目中,都可以见到他的身影.今天就以loading作为切入口,唠叨一下vuejs的插件的写法. 看vuejs官方文档关于插件的说明,关于使用插件和写插件,V ...

  7. Eclipse安装图形JFrame&comma;Jswing编程界面

    打开eclipse,选择help--->install new software 来源http://www.cnblogs.com/xiaobo-Linux/p/7954274.html 打开网 ...

  8. video元素和audio元素

    内容: 1.video元素 2.audio元素 注:这两个元素均是HTML5新增的元素 1.video元素 (1)用途 <video> 标签定义视频,比如电影片段或其他视频流 (2)标签属 ...

  9. 跨终端Web

    1.终端vs设备 H5页面运行在同一设备的不同终端下. (1)Web浏览器. (2)微信.QQ浏览器. (3)移动App的Webview. (4)TV机顶盒. 2.跨终端的实现方式 (1)响应式 存在 ...

  10. 学习&colon;erlang正则

    一.re:run/3. ①.re:run("321321","2132",[caseless]).     {match,[{1,4}]} %% 返回值是 匹配 ...