题目:https://www.luogu.org/problemnew/show/P4547

https://www.lydsy.com/JudgeOnline/problem.php?id=5006

参考博客:https://www.cnblogs.com/yanshannan/p/9452802.html

注意同一个点连出去的两条边本来就不能一起选!

每次调用 map 会很慢!所以修改的时候新定义一个 &tmp,就能过了。

代码如下:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#define il inline
using namespace std;
typedef long long ll;
int rd()
{
int ret=,f=; char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=; ch=getchar();}
while(ch>=''&&ch<='')ret=ret*+ch-'',ch=getchar();
return f?ret:-ret;
}
int const xn=,xm=(<<)+,mod=1e9+;
int n,m,bin[],ct;
map<int,int>f[xm];
struct N{
int s,t,w;
N(int s=,int t=,int w=):s(s),t(t),w(w) {}
}ed[];
il ll pw(ll a,int b){ll ret=; for(;b;b>>=,a=a*a%mod)if(b&)ret=ret*a%mod; return ret;}
il int upt(int x){while(x>=mod)x-=mod; while(x<)x+=mod; return x;}
il int dfs(int s,int t)
{
if(!s&&!t)return ;
if(f[s][t])return f[s][t];
int &tmp=f[s][t];//
for(int i=;i<=ct;i++)
{
if((ed[i].s<<)<=s||(ed[i].s|s)!=s||(ed[i].t|t)!=t)continue;//t
tmp=(tmp+(ll)dfs(s^ed[i].s,t^ed[i].t)*ed[i].w)%mod;
}
return tmp=upt(tmp);//-
}
int main()
{
n=rd(); m=rd();
bin[]=; for(int i=;i<=;i++)bin[i]=bin[i-]*;
int inv2=pw(,mod-),inv4=pw(,mod-);
for(int i=,tp,a,b,c,d;i<=m;i++)
{
tp=rd(); a=rd(); b=rd();
ed[++ct]=N(bin[a-],bin[b-],inv2);
if(!tp)continue; c=rd(); d=rd();
ed[++ct]=N(bin[c-],bin[d-],inv2);
if(a==c||b==d)continue;//!
if(tp==)ed[++ct]=N(bin[a-]|bin[c-],bin[b-]|bin[d-],inv4);
if(tp==)ed[++ct]=N(bin[a-]|bin[c-],bin[b-]|bin[d-],-inv4);
}
printf("%lld\n",(ll)dfs(bin[n]-,bin[n]-)*bin[n]%mod);
return ;
}

洛谷 P4547 & bzoj 5006 随机二分图 —— 状压DP+期望的更多相关文章

  1. 题解 洛谷 P4547 【[THUWC2017]随机二分图】

    根据题意,题目中所求的即为所有\(n!\)种完美匹配的各自的出现概率之和再乘上\(2^n\)的值. 发现\(n\)很小,考虑状压\(DP\).设\(f_{S,T}\)为左部图匹配情况为\(S\),右部 ...

  2. UOJ #129 / BZOJ 4197 / 洛谷 P2150 - [NOI2015]寿司晚宴 (状压dp+数论+容斥)

    题面传送门 题意: 你有一个集合 \(S={2,3,\dots,n}\) 你要选择两个集合 \(A\) 和 \(B\),满足: \(A \subseteq S\),\(B \subseteq S\), ...

  3. 【题解】洛谷P2704 [NOI2001] 炮兵阵地(状压DP)

    洛谷P2704:https://www.luogu.org/problemnew/show/P2704 思路 这道题一开始以为是什么基于状压的高端算法 没想到只是一道加了一行状态判断的状压DP而已 与 ...

  4. 【题解】洛谷P1896 [SCOI2005] 互不侵犯(状压DP)

    洛谷P1896:https://www.luogu.org/problemnew/show/P1896 前言 这是一道状压DP的经典题 原来已经做过了 但是快要NOIP 复习一波 关于一些位运算的知识 ...

  5. 洛谷P1171 售货员的难题【状压DP】

    题目描述 某乡有n个村庄(1 输入格式: 村庄数n和各村之间的路程(均是整数). 输出格式: 最短的路程. 输入样例: 3 0 2 1 1 0 2 2 1 0 输出样例 3 说明 输入解释 3 {村庄 ...

  6. 2018.07.18 洛谷P1171 售货员的难题(状压dp)

    传送门 感觉是一道经典的状压dp,随便写了一发卡了卡常数开了个O(2)" role="presentation" style="position: relati ...

  7. 洛谷P2761 软件补丁问题(状压dp)

    传送门 啊咧……这题不是网络流二十四题么……为啥是个状压dp…… 把每一个漏洞看成一个状态,直接硬上状压dp 然后因为有后效型,得用spfa //minamoto #include<iostre ...

  8. 洛谷$P3226\ [HNOI2012]$集合选数 状压$dp$

    正解:$dp$ 解题报告: 传送门$QwQ$ 考虑列一个横坐标为比值为2的等比数列,纵坐标为比值为3的等比数列的表格.发现每个数要选就等价于它的上下左右不能选. 于是就是个状压$dp$板子了$QwQ$ ...

  9. 洛谷 P2622 关灯问题II【状压DP】

    传送门:https://www.luogu.org/problemnew/show/P2622 题面: 题目描述 现有n盏灯,以及m个按钮.每个按钮可以同时控制这n盏灯--按下了第i个按钮,对于所有的 ...

随机推荐

  1. ArcGIS API for js Legend(图例)

    1.说明 有关怎么把ArcGIS API for js部署到IIS上,请参考我上面的写的博客https://www.cnblogs.com/net064/p/10302660.html 2.运行效果 ...

  2. mac查看网页时翻页

    1 fn + 上下  翻页 2 command + 上下  一下子到文档头和文档尾部

  3. cocos2dx的ui封装

    cocos2dx里加载cocosudio导出的ui配置文件,在这之上封装了一下,封装核心类包括 UIManager,UILayer,UIOwner UIManager是所有ui总的管理类,代码如下: ...

  4. Function- 几个转换函数

    几个转换函数 SJIS_DBC_TO_SBC 全角转半角SJIS_SBC_TO_DBC 半角转全角 CLPB_IMPORT :从剪贴板导入internal tableCLPB_EXPORT : 从in ...

  5. Java中的 && 与&

    Java中&&和&都是表示与的逻辑运算符,都表示逻辑运输符and,当两边的表达式都为true的时候,整个运算结果才为true,否则为false. &&的短路功能 ...

  6. Data Structure Array: Largest subarray with equal number of 0s and 1s

    http://www.geeksforgeeks.org/largest-subarray-with-equal-number-of-0s-and-1s/ #include <iostream& ...

  7. Python 3 软件开发规范

    Python 3 软件开发规范 参考链接 http://www.cnblogs.com/linhaifeng/articles/6379069.html#_label14 对每个目录,文件介绍. #= ...

  8. Docker dockerfile命令详解

    docker-file 官网文档:https://docs.docker.com/v17.09/engine/reference/builder/ 制作Dockerfile为Docker入门学习的第一 ...

  9. sdut oj 操作系统实验--SSTF磁盘调度算法【操作系统算法】

    操作系统实验--SSTF磁盘调度算法 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 磁盘调度在多道程序设计的计算机系统中,各个进 ...

  10. 算法(Algorithms)第4版 练习 2.2.9

    package com.qiusongde; import edu.princeton.cs.algs4.In; import edu.princeton.cs.algs4.StdOut; publi ...