Portal -->bzoj4596

Solution

  这题的话。。因为\(N\)比较小啊所以我们可以大力容斥(尽管实际算下来复杂度有点爆炸不过实测是能过的qwq)

  枚举包含了哪些颜色的边,每次重新填矩阵然后矩阵树定理高消求一波行列式然后乘上个容斥系数加到答案里面去就好了

  关于容斥原理这个东西。。(怎么感觉快忘光了)

  其实也不用想太多,反正是从最终状态(包含所有的,在这里是包含\(n-1\)种)开始往后推符号为一正一负就好了:

\[ans=ans_{n-1}-ans_{n-2}+ans_{n-3}...
\]

  然后代码大概长这个样子

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=20,MOD=1e9+7;
struct xxx{
int x,y,nxt;
}a[100010];
int A[N][N],h[N],ok[N];
int n,m,tot,ans;
void add(int x,int y,int col);
int solve(int n);
int Abs(int x){return x>0?x:-x;}
bool in(int st,int x){return st>>(x-1)&1;}
int work(); int main(){
#ifndef ONLINE_JUDGE
freopen("a.in","r",stdin);
#endif
int x,y;
scanf("%d",&n);
memset(h,-1,sizeof(h));
tot=0;
for (int i=1;i<n;++i){
scanf("%d",&m);
for (int j=1;j<=m;++j){
scanf("%d%d",&x,&y);
add(x,y,i);
}
}
ans=0;
int all=1<<n-1,cnt,tmp,n1;
for (int i=1;i<all;++i){
memset(A,0,sizeof(A));
cnt=0;
for (int j=1;j<n;++j)
if (in(i,j)){
for (int k=h[j];k!=-1;k=a[k].nxt){
x=a[k].x; y=a[k].y;
++A[x][x]; ++A[y][y];
--A[x][y]; --A[y][x];
}
}
else ++cnt;
tmp=solve(n-1);
if (cnt&1)
ans=(ans-tmp+MOD)%MOD;
else
ans=(ans+tmp)%MOD;
}
printf("%d\n",ans);
} void add(int x,int y,int col){
a[++tot].x=x; a[tot].y=y; a[tot].nxt=h[col]; h[col]=tot;
} int solve(int n){
int id,ret=1,tmp;
for (int i=1;i<=n;++i){
for (id=i;id<=n;++id)
if (A[id][i]) break;
if (id>n) continue;
if (id!=i){
ret=-ret;
for (int j=i+1;j<=n;++j) swap(A[i][j],A[id][j]);
}
for (int j=i+1;j<=n;++j){
while (A[j][i]){
tmp=A[j][i]/A[i][i];
for (int k=1;k<=n;++k)
A[j][k]=(1LL*A[j][k]+MOD-1LL*tmp*A[i][k]%MOD)%MOD;
if (A[j][i]==0) break;
ret=-ret;
for (int k=1;k<=n;++k)
swap(A[j][k],A[i][k]);
}
}
}
for (int i=1;i<=n;++i)
ret=1LL*ret*A[i][i]%MOD;
return (ret+MOD)%MOD;
}

【bzoj4596】黑暗前的幻想乡的更多相关文章

  1. 【BZOJ4596】黑暗前的幻想乡(矩阵树定理,容斥)

    [BZOJ4596]黑暗前的幻想乡(矩阵树定理,容斥) 题面 BZOJ 有\(n\)个点,要求连出一棵生成树, 指定了一些边可以染成某种颜色,一共\(n-1\)种颜色, 求所有颜色都出现过的生成树方案 ...

  2. 【BZOJ4596】[Shoi2016]黑暗前的幻想乡 容斥+矩阵树定理

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

  3. bzoj4596/luoguP4336 [SHOI2016]黑暗前的幻想乡(矩阵树定理,容斥)

    bzoj4596/luoguP4336 [SHOI2016]黑暗前的幻想乡(矩阵树定理,容斥) bzoj Luogu 题解时间 看一看数据范围,求生成树个数毫无疑问直接上矩阵树定理. 但是要求每条边都 ...

  4. bzoj4596[Shoi2016]黑暗前的幻想乡 Matrix定理+容斥原理

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

  5. bzoj 4596 [Shoi2016]黑暗前的幻想乡 矩阵树定理+容斥

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

  6. 「SHOI2016」黑暗前的幻想乡 解题报告

    「SHOI2016」黑暗前的幻想乡 sb题想不出来,应该去思考原因,而不是自暴自弃 一开始总是想着对子树做dp,但是状态压不起去,考虑用容斥消减一些条件变得好统计,结果越想越乱. 期间想过矩阵树定理, ...

  7. [ZJOI2016]小星星&[SHOI2016]黑暗前的幻想乡(容斥)

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

  8. P4336 [SHOI2016]黑暗前的幻想乡

    P4336 [SHOI2016]黑暗前的幻想乡 矩阵树定理(高斯消元+乘法逆元)+容斥 ans=总方案数 -(公司1未参加方案数 ∪ 公司2未参加方案数 ∪ 公司3未参加方案数 ∪ ...... ∪ ...

  9. 【BZOJ 4596】 4596: [Shoi2016]黑暗前的幻想乡 (容斥原理+矩阵树定理)

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

  10. BZOJ4596: [Shoi2016]黑暗前的幻想乡

    Description 四年一度的幻想乡大选开始了,最近幻想乡最大的问题是很多来历不明的妖 怪涌入了幻想乡,扰乱了幻想乡昔日的秩序.但是幻想乡的建制派妖怪(人类) 博丽灵梦和八云紫等人整日高谈所有妖怪 ...

随机推荐

  1. Windows下Mongo分片及集群

    这里简单介绍一下windows下mongodb的分片设置和集群搭建,希望能够为迷茫的新手起到一点点作用.其实windows下与linux下思路是一致的,只是绑定时的ip,与端口号不同,linux下可以 ...

  2. sqoop安装与简单实用

    一,sqoop安装 1.解压源码包 2.配置环境变量 3.在bin目录下的 /bin/configsqoop 注释掉check报错信息 4.配置conf目录下 /conf/sqoop-env.sh 配 ...

  3. how to update product listing price sale price and sale date using mobile App

    Greetings from Amazon Seller Support, Thank you for writing back to us. I have reviewed our previous ...

  4. Alpha发布用户使用报告

    此作业要求参见:[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2325] 组名:可以低头,但没必要 组长:付佳 组员:张俊余 李文涛 孙 ...

  5. 2017软工 — 每周PSP

    1. PSP表格 2. PSP饼图 3. 本周进度条 4. 累计折线图

  6. tensorflow训练线性回归模型

    tensorflow安装 tensorflow安装过程不是很顺利,在这里记录一下 环境:Ubuntu 安装 sudo pip install tensorflow 如果出现错误 Could not f ...

  7. struts2 不返回result的做法

    有时候 比如提交一个弹框的表单 提交成功后我们只是让表单关闭并不进行页面跳转,那么action 里面就returne null, 然后result 也不用配置了 版权声明:本文为博主原创文章,未经博主 ...

  8. 编码转换,基础,copy

    阅读目录 编码转换 基础补充 深浅拷贝 文件操作 一,编码转换 1. ASCII : 最早的编码. ⾥⾯有英⽂⼤写字⺟, ⼩写字⺟, 数字, ⼀些特殊字符. 没有中⽂, 8个01代码, 8个bit, ...

  9. Android性能测试工具:Emmagee介绍

    简介 Emmagee是监控指定被测应用在使用过程中占用机器的CPU.内存.流量资源的性能测试小工具.该工具的优势在于如同windows系统性能监视器类似,它提供的是数据采集的功能,而行为则基于用户真实 ...

  10. 公告:请访问我的个人博客新站点——www.huangshujia.me

    我的个人博客现在在(http://www.huangshujia.me/)cnblog这里不会做任何更新了.或者关注我的个人公众号:碱基矿工