Description

  铭铭有n个十分漂亮的珠子和若干根颜色不同的绳子。现在铭铭想用绳子把所有的珠子连接成一个整体。

  现在已知所有珠子互不相同,用整数1到n编号。对于第i个珠子和第j个珠子,可以选择不用绳子连接,或者在ci,j根不同颜色的绳子中选择一根将它们连接。如果把珠子看作点,把绳子看作边,将所有珠子连成一个整体即为所有点构成一个连通图。特别地,珠子不能和自己连接。

  铭铭希望知道总共有多少种不同的方案将所有珠子连成一个整体。由于答案可能很大,因此只需输出答案对1000000007取模的结果

Solution

用总数减去不连通的就是答案

设 \(f[S]\) 表示 \(S\) 集合中,所有点连通的图的方案.

设 \(g[S]\) 表示 \(S\) 集合中任意连边.

\(f[S]=g[S]-\sum_{S'∈S}f[S']*g[S\)^\(S']\)

玩样例发现,这样做会减多,因为 \(g[S\)^\(S']\) 的方案中也有连通图,所以在连通时\(f[S']\)和\(g[S\)^\(S']\)是对称的,会重复

所以需要强制定一个节点作为代表元,\(S'\)集合必须包含这个点

神奇的是:

按理来说写成这样才对:

  for(int i=1;i<=m;i++){
for(int S=i&(i-1);S;S=i&(S-1))
if(!((i^S)&(i&(-i))))f[i]=(f[i]+1ll*f[S]*g[i^S])%mod;
f[i]=(g[i]-f[i]+mod)%mod;
}

写成这样也对了,懵逼.jpg

  for(int i=1;i<=m;i++){
for(int S=i&(i-1);S;S=i&(S-1))
if(!((i^S)&1))f[i]=(f[i]+1ll*f[S]*g[i^S])%mod;
f[i]=(g[i]-f[i]+mod)%mod;
#include<bits/stdc++.h>
using namespace std;
const int N=18,mod=1e9+7;
int f[1<<16],g[1<<16],c[N][N],n;
int main(){
freopen("pp.in","r",stdin);
freopen("pp.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%d",&c[i][j]);
int m=(1<<n)-1;
for(int i=0;i<=m;i++){
g[i]=1;
for(int j=1;j<=n;j++)
if(i&(1<<(j-1)))
for(int k=j+1;k<=n;k++)
if((i&(1<<(k-1))))g[i]=1ll*g[i]*(c[j][k]+1)%mod;
}
for(int i=1;i<=m;i++){
for(int S=i&(i-1);S;S=i&(S-1))
if(!((i^S)&1))f[i]=(f[i]+1ll*f[S]*g[i^S])%mod;
f[i]=(g[i]-f[i]+mod)%mod;
}
printf("%d\n",f[m]);
return 0;
}

最新文章

  1. [原创]Windows Server 2003 物理机转换为VMware虚拟机出现VSS错误的处理
  2. Thinking Of Matrix
  3. 真正的mybatis_redis二级缓存
  4. 【转】MyEclipse2015安装SVN插件
  5. RDS MySQL 全文检索相关问题的处理
  6. Android中Webview使用自定义的javascript进行回调
  7. openstack 前期准备工作
  8. Spring Data JPA教程, 第四部分: JPA Criteria Queries(未翻译)
  9. Java SE 6 新特性: 编译器 API
  10. Eclipse tomcat插件
  11. Oracle用户操作
  12. 在Cocos2D中改变动态物体为静态物体
  13. npm安装时一些错误
  14. eclipse与SVN 结合(删除SVN中已经上传的问题)
  15. linux 标准I/O (二)
  16. Excel打开csv文件乱码问题的解决办法
  17. [2017BUAA软工]第二次博客作业:代码复审
  18. go语言基础之闭包捕获外部变量特点
  19. 【笔记】css 1像素边框
  20. 使用selenium实现简单网络爬虫抓取MM图片

热门文章

  1. C语言第零次作业总结
  2. 2017-2018-1 Java演绎法 第三周 作业
  3. Beta冲刺 第一天
  4. MySQL的小Tips
  5. 团队作业7——第二次项目冲刺(Beta版本12.08-12.10)
  6. 【iOS】跳转到设置页面
  7. IdentityServer4实战 - 基于角色的权限控制及Claim详解
  8. 第四章 JavaScript操作DOM对象
  9. EasyUI 数据网格行过滤
  10. 扫描工具nmap介绍