https://loj.ac/problem/2290

题解:https://blog.csdn.net/Vectorxj/article/details/78905660

不是很好理解,对于边(x1,y1)和(x2,y2),可以分“x1或y1已匹配”,“x2或y2已匹配”,“x1,x2,y1,y2均未匹配”三种情况考虑拆边的正确性。

状压的时候,对于当前左边已经匹配的集合,只需要枚举左边已匹配的最后一个是用哪条边匹配的即可,也就是程序里的S<(1<<T)。

不要用顺推,记忆化搜索会忽略一些用不到的状态,所以会快一些。

 1 #include<map>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #define rep(i,l,r) for (int i=l; i<=r; i++)
 5 using namespace std;
 6
 7 const int N=16,mod=1000000007,inv2=(mod+1)>>1,inv4=(mod+1)>>2;
 8 int n,m,cnt,t,x,y;
 9 struct E{ int S,p,c; E(int _S=0,int _p=0,int _c=0):S(_S),p(_p),c(_c){} }G[N*N<<2];
10 map<int,int>f[1<<N];
11
12 inline void add(int &x,int y){ x+=y; if (x>=mod) x-=mod; }
13 int F(int S){
14     if (!S) return 1;
15     int T0=S>>n,S0=S^(T0<<n);
16     if (f[S0].count(T0)) return f[S0][T0];
17     int res=0;
18     rep(i,1,cnt){
19         int T=G[i].S;
20         if ((T&S)==T && S<(T<<1)) add(res,1ll*F(S^T)*G[i].p%mod);
21     }
22     return f[S0][T0]=res;
23 }
24
25 int main(){
26     freopen("bzoj5006.in","r",stdin);
27     freopen("bzoj5006.out","w",stdout);
28     scanf("%d%d",&n,&m);
29     rep(i,1,m){
30         scanf("%d%d%d",&t,&x,&y);
31         int S1=(1<<(x-1))|(1<<(y+n-1)); G[++cnt]=E(S1,inv2,1);
32         if (t){
33             scanf("%d%d",&x,&y);
34             int S2=(1<<(x-1))|(1<<(y+n-1)); G[++cnt]=E(S2,inv2,1);
35             if (S1 & S2) continue;
36             G[++cnt]=E(S1|S2,((t==1)?inv4:mod-inv4),2);
37         }
38     }
39     printf("%lld\n",(1ll<<n)*F((1<<(n*2))-1)%mod);
40     return 0;
41 }

转载于:https://www.cnblogs.com/HocRiser/p/8941925.html

[BZOJ5006][LOJ#2290][THUWC2017]随机二分图(概率+状压DP)相关推荐

  1. 【PKUWC2018】随机算法【状压dp】【组合计数】

    题意:一张nnn个点mmm条边的无向无权图,求以下算法计算最大独立集的正确率:随机一个排列,依次考虑排列中每一个点,如果不与任何一个独立集中的点相邻则将其加入独立集.模9982443539982443 ...

  2. 【Gym - 101915D】Largest Group(二分图最大团,状压dp)

    题干: 大黑山上有小小民和小小涛两种物种,山东人小李想要研究这两种物种的关系 奇怪的是大黑山上有相同数量的小小民和小小涛.小李数了数一共有 P 个,小李分别给P个小小民和小小涛编号 1 - P 号,已 ...

  3. loj 1316(spfa预处理+状压dp)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=27024 题意:求0-(n-1)的经过最多的标记的点的最短路. 思路 ...

  4. Educational Codeforces Round 13 E. Another Sith Tournament 状压dp

    E. Another Sith Tournament 题目连接: http://www.codeforces.com/contest/678/problem/E Description The rul ...

  5. POJ3163 King of Fighters 状压DP/费用流

    回归后的第一篇blog,康复打板中 这种题我做了2个多小时..(反正我现在已经失去对题目难度的辨识了) 很容易想到O(mn2n)O(mn2n)O(mn2^n)的状压做法,但是超时,考虑优化,想到不正确 ...

  6. POJ 1038 Bugs Integrated Inc (复杂的状压DP)

    \(POJ~1038~~*Bugs~Integrated~Inc:\) (复杂的状压DP) \(solution:\) 很纠结的一道题目,写了大半天,就想练练手,结果这手生的.其实根据之前那道炮兵阵地 ...

  7. codeforces 8C. Looking for Order 状压dp

    题目链接 给n个物品的坐标, 和一个包裹的位置, 包裹不能移动. 每次最多可以拿两个物品, 然后将它们放到包里, 求将所有物品放到包里所需走的最小路程. 直接状压dp就好了. #include < ...

  8. UVA10296 Jogging Trails(中国邮递员问题)(欧拉回路、一般图最大权匹配 / 状压DP)

    整理的算法模板合集: ACM模板 目录 思路 UVA10296 Jogging Trails 题目翻译: 给你n个点,m条无向边,每条边有一定的距离数值,构造成一个连通图.问从任意一点出发,遍历所有的 ...

  9. POJ 2411 Mondriaan‘s Dream(最清楚好懂的状压DP讲解)(连通性状态压缩DP)

    poj 2411 Mondriaan's Dream(最清晰的状压DP解析) 闫氏DP大法好 我们这里是一列一列地来,因为是一个棋盘性的状态压缩DP,从哪个方向都一样 摆放的小方格总方案数 等价于 横 ...

  10. 【每日DP】day2、P1879 [USACO06NOV]Corn Fields G玉米地(状压DP模板题)难度⭐⭐⭐★

    昨天的每日DP我还在写01背包,今天就到状压DP了,真刺激. P1879 [USACO06NOV]Corn Fields G 题目链接 输入 2 3 1 1 1 0 1 0 输出 9 一道简单的状压D ...

最新文章

  1. 自定义Counter使用
  2. linux设置数据库定时备份,linux中使用计划任务进行数据库定期备份
  3. Notepad++添加右键菜单
  4. 通过电脑给继电器发送指令_三菱FX PLC学习之通信指令(上)
  5. python 结束子线程并保证工作完成_python3中在线程中结束工作进程的方法
  6. unity怎么设置游戏页面_杭州有没有正规的unity游戏开发培训机构?
  7. 中科大 计算机网络9 互联网历史
  8. 【实操手册】如何把一场直播录制下来?
  9. php mysql读取数据查询_PHP MySQL 读取数据
  10. 企业信息化建设过程中,交通物流行业如何凭借数据成功转型?
  11. 查看mysql状态常用命令
  12. 排序算法--希尔排序
  13. 基于STM32的(NB-IOT(BC26))温湿度监测系统
  14. 软件测试中性能瓶颈是什么,性能测试常见瓶颈分析及调优方法
  15. ROS Launch使用总结
  16. 使用nfsstat命令查看NFS服务器状态
  17. 如何使用HTML5+CSS3绘制一个QQ 企鹅Logo
  18. JavaFX开发的地图编辑器WiTKMapEditor(更新GitHub地址)
  19. 贪心算法(Greedy )
  20. strncasecmp函数

热门文章

  1. android 注解创建对象,Android ORM 框架:GreenDao 使用详解
  2. C语言项目大作业万历年,用C语言编写万历,详细代码.doc
  3. 点钞视频软件测试,模拟银行综合实验
  4. qt tcp不可以循环发送_Qt tcp 多线程下QTCPsocket不能发送数据~解决办法(2)
  5. loadGrid layui
  6. java——base64 加密和解密
  7. java(6) ArrayList源码
  8. 五种常用web服务器jvm参数设置
  9. 精华阅读第 13 期 |常见的八种导致 APP 内存泄漏的问题
  10. 淘宝双十一火爆下的暗礁?