传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=2560

Sol

正难则反 直接统计可行的状态不好统计 就反过来统计不可行的状态 再用所有状态减去不可行的状态

在算不可行状态的时候 固定一个定点 与这个定点联通的点为集合$st1$ 与这个定点不连通的点为集合$st2$

引入$f,g$ $g$表示随意连边可产生的方案数 $f$为连边联通的方案数

这样产生的不合法方案数$g_{st2}*f_{st1}$

而由于固定了一个定点 所以可以保证算出来的方案数不重不漏

题目同时涉及了一个枚举子集的方法=v=

Code

#include <bits/stdc++.h>
using namespace std;
const int fish=1000000007;
int N;
long long a[1000][1000],f[65550],g[65550];
int main()
{scanf("%d",&N);for (int i=1;i<=N;i++)for (int j=1;j<=N;j++)scanf("%d",&a[i][j]);int ST=(1<<N)-1;for (int i=1;i<=ST;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]=g[i]*(a[j][k]+1)%fish;f[i]=g[i];int zt=0;for (int j=N;j>=0;j--)if (i&(1<<j-1)){zt=j;break;}zt=i^(1<<zt-1);for (int j=zt;j;j=zt&(j-1))//枚举所有子集的方法 f[i]=(f[i]-g[j]*f[i^j]*1ll%fish+fish)%fish;}printf("%lld",f[ST]%fish);return 0;
}

转载于:https://www.cnblogs.com/si--nian/p/11368720.html

[BZOJ 2560]串珠子相关推荐

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

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

  2. bzoj 2560: 串珠子

    题意: 铭铭有n个十分漂亮的珠子和若干根颜色不同的绳子.现在铭铭想用绳子把所有的珠子连接成一个整体. 现在已知所有珠子互不相同,用整数1到n编号.对于第i个珠子和第j个珠子,可以选择不用绳子连接,或者 ...

  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. 在python中调用js或者nodejs要使用PyExecJs第三方包。
  2. 紧急提醒!售价3980,成本价80,你被坑过吗?
  3. Flutter开发之布局-4-container(18)
  4. Keil的HTM 文件分析
  5. Maven类包冲突终极解决小技若干
  6. C/C++之数据类型
  7. 有关Spring注解@xxx的零碎知识
  8. 互斥锁属性PTHREAD_MUTEX_RECURSIVE
  9. lu分解 百度百科
  10. php换行符sql,如何在PHP和MySQL的textarea中给换行符的同时避免SQL注入?
  11. 六问阿里云计算安全,全面解析阿里云ECS服务器的计算安全进化之路
  12. rust投递箱连接箱子_海门市围板箱定制围板箱内衬
  13. ESP8266串口转wifi/wifi转串口模块
  14. 仿网易评论盖楼的留言板插件demo
  15. STM32初始化产生低电平引起的问题
  16. 【JVM】JVM系列
  17. WebView调用微信H5支付
  18. Cisco Packet Tracer 6.0下载安装及汉化包使用方法
  19. Camunda入门(四) - 流程应用(支付流程)入门示例
  20. zipkin学习--01--理论

热门文章

  1. 第09课:精进的4个习惯
  2. Android otapackage流程分析三
  3. 安卓图片自适应高度时图片长度过大的解决方案
  4. JavaScript函数录入成绩
  5. java 漏洞扫描 开源_有哪些开源web应用漏洞扫描工具?
  6. Java实现 LeetCode 658 找到 K 个最接近的元素(暴力)
  7. Unity_用脚本控制Spine动画播放和切换皮肤
  8. win10系统崩溃怎么修复_小编调解 win10系统wifi保护器防蹭网的修复教程 -win10使用教程...
  9. 每日总结2022.12.27
  10. sprintf %02x