题意:

  铭铭有n个十分漂亮的珠子和若干根颜色不同的绳子。现在铭铭想用绳子把所有的珠子连接成一个整体。
  现在已知所有珠子互不相同,用整数1到n编号。对于第i个珠子和第j个珠子,可以选择不用绳子连接,或者在ci,j根不同颜色的绳子中选择一根将它们连接。如果把珠子看作点,把绳子看作边,将所有珠子连成一个整体即为所有点构成一个连通图。特别地,珠子不能和自己连接。
  铭铭希望知道总共有多少种不同的方案将所有珠子连成一个整体。由于答案可能很大,因此只需输出答案对1000000007取模的结果。

题解:

看到计数考虑容斥!而且在n怎么小的情况下。
假如不需要连通那么就是到sb题。
预处理 g[S] g[S]表示选点状态S时的方案数。
然后容斥,将点分成与某个定点相连,其它随便的两部分。
枚举子集,所以 f[S]=g[S]−∑g[j]∗f[Sxorj] f[S]=g[S]-\sum g[j]*f[S xor j]
code:

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#define LL long long
using namespace std;
const LL mod=1000000007;
LL n,g[66000],f[66000];
LL c[20][20];
void pre(LL S)
{g[S]=1;for(LL i=1;i<=n;i++)if((1<<(i-1))&S)for(LL j=i+1;j<=n;j++)if((1<<(j-1))&S) (g[S]*=(c[i][j]+1))%=mod;
}
int main()
{scanf("%lld",&n);for(LL i=1;i<=n;i++)for(LL j=1;j<=n;j++) scanf("%lld",&c[i][j]);for(LL i=0;i<(1<<n);i++) pre(i);for(LL S=0;S<(1<<n);S++){f[S]=g[S];LL i=S^(S&-S);for (LL j=i;j;j=(j-1)&i) f[S]=(f[S]-g[j]*f[S^j]%mod+mod)%mod;}printf("%lld",(f[(1<<n)-1])%mod);
}

bzoj 2560: 串珠子相关推荐

  1. BZOJ 2560: 串珠子 (状压DP+枚举子集补集+容斥)

    (Noip提高组及以下),有意者请联系Lydsy2012@163.com,仅限教师及家长用户. 2560: 串珠子 Time Limit: 10 Sec Memory Limit: 128 MB Su ...

  2. [BZOJ 2560]串珠子

    传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=2560 Sol 正难则反 直接统计可行的状态不好统计 就反过来统计不可行的状态 再用所有状态 ...

  3. bzoj 2560: 串珠子【状压dp】

    正难则反,设g[s]为集合s不一定联通的方案数,这个很好求,把边数+1乘起来即可,f[s]为s一定联通的方案数 f考虑容斥,就是g[s]-Σf[nw]*g[s^nw],nw是s的子集,这样就减掉了不联 ...

  4. bzoj 2560 串珠子

    大意: n个点, $i$和$j$之间可以连$c_{ij}$种无向边, 求连成连通图的方案数. 设$f_i$为状态$i$时连通图方案, $g_i$为状态$i$时所有方案. 有$f[i]=g[i]-\su ...

  5. bzoj P2560 串珠子

    传送门 第一道子集dp.(感觉很像状压dp.. 好弱啊我看了好多大神的博客才勉强看懂 g[s]表示s状态下的所有情况,即s状态下的点两两之间任意连边(包括不连边),f[s]表示s状态下的合法情况(所有 ...

  6. bzoj2560串珠子 状压dp+容斥(?)

    2560: 串珠子 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 515  Solved: 348 [Submit][Status][Discuss ...

  7. BZOJ 2560(子集DP+容斥原理)

    2560: 串珠子 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 757  Solved: 497 [Submit][Status][Discuss ...

  8. BZOJ2560 串珠子

    2560: 串珠子 Time Limit: 10 Sec   Memory Limit: 128 MB Submit: 469   Solved: 313 [ Submit][ Status][ Di ...

  9. [tsinsen_A1278]串珠子

    [tsinsen_A1278]串珠子 试题描述 铭铭有 \(n\) 个十分漂亮的珠子和若干根颜色不同的绳子.现在铭铭想用绳子把所有的珠子连接成一个整体. 现在已知所有珠子互不相同,用整数 \(1\) ...

最新文章

  1. EMC设计中电缆屏蔽使用方法
  2. android专栏目录
  3. Soldier and Badges
  4. 解决cv2.findContours返回值too many values to unpack (expected 2)的问题
  5. cad自动标注界址点_这样绘制cad施工图,提升效率至少3倍以上!
  6. 如何升级cordova插件
  7. 西安理工大学计算机研究生名单,西安理工大学2019年硕士研究生拟录取名单
  8. python代码大全中文注释_零基础小白必看篇:Python代码注释规范代码实例解析操作(收藏)...
  9. P3 如何创建数据库数据表
  10. C++基础教程之日期和时间
  11. Python音乐播放器-美观-简约-本地
  12. 二/三维空间曲面的切平面以及在某一点上的切线,法线
  13. ctf.show misc入门 21~40
  14. [极致用户体验] 网页里的「返回」应该用 history.back 还是 push ?
  15. Android 应用桌面角标显示
  16. 托福、雅思、GRE、SAT、GMAT
  17. Go语言之值传递与引用传递
  18. 【ES6】ES6超详讲解(@_@;)
  19. 消灭该死的重复 下(3)continue 跳转
  20. 03Nginx虚拟主机与域名解析

热门文章

  1. 阿里巴巴开源限流系统 Sentinel 全解析
  2. python 比较两字符串是否相同_Python如何确定两个字符串是否相同
  3. java怎么录入4位会员号_java会员信息录入 需求说明: 录入会员信息 判断录入的会员号是否合法...
  4. 为什么现在老年人看上去普遍比较年轻
  5. 加快推进工业互联网,图扑“智”绘发展新蓝图
  6. 淘宝店铺推广为什么会没有起到效果?
  7. 克服“水土不服”,融云助攻小象直播杀破“出海重围”
  8. H.266/VVC代码学习:xCompressCU函数
  9. CodeForces 103A Testing Pants for Sadness
  10. 测国外服务器速度的网站,来,测一下你国外高防服务器网站的打开速度