题面链接

洛谷

sol

唯一的重点是拆边。。。

0的不管,只看1、2。

先无论如何把两条边的边权赋为\(0.5\)然后我们发现如果两个都选了。

对于第一种边,我们发现如果\(\frac{1}{2} * \frac{1}{2}=\frac{1}{4}\),但我们实际上需要的是\(\frac{1}{2}\)所以我们连一条两条边都在内的边,权值为\(\frac{1}{4}\)

同理,第二种就是\(-\frac{1}{4}\)

然后就是状压\(dp\)

#include<map>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define gt getchar()
#define ll long long
#define File(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout)
inline int in()
{
int k=0;char ch=gt;
while(ch<'-')ch=gt;
while(ch>'-')k=k*10+ch-'0',ch=gt;
return k;
}
const int YL=1e9+7,inv2=5e8+4,inv4=2.5e8+2;
inline int MO(const int &a){return a>=YL?a-YL:a;}
std::map<int,int>f[1<<16];
#define mk(x,y) ((1<<(x-1))|(1<<(y+n-1)))
int S[1<<16],v[1<<16],cnt,n,m;
int dp(int S_now)
{
if(!S_now)return 1;
int T_0=S_now>>n,S_0=S_now&((1<<n)-1);
if(f[T_0].count(S_0))return f[T_0][S_0];
int &res=f[T_0][S_0];
for(int i=1;i<=cnt;++i)
{
int T=S[i];
if((S_now|T)==S_now&&S_now<(T<<1))
res=MO(res+1ll*dp(S_now^T)*v[i]%YL);
}
return res;
}
int main()
{
n=in(),m=in();
for(int i=1;i<=m;++i)
{
int op=in(),x=in(),y=in();
int S1=mk(x,y);S[++cnt]=S1,v[cnt]=inv2;
if(op)
{
x=in(),y=in();
int S2=S[++cnt]=mk(x,y);v[cnt]=inv2;
if(S[cnt]&S1)continue;
S[++cnt]=S1|S2;
v[cnt]=(op==1?inv4:YL-inv4);
}
}
printf("%lld\n",(1ll<<n)*dp((1<<2*n)-1)%YL);
return 0;
}

最新文章

  1. 【小贴士】关于transitionEnd/animate的一个有趣故事
  2. Fiddler (三) Composer创建和发送HTTP Request
  3. CGGeometry Reference (一)
  4. mysql启动不成功显示The server quit without updating PID file的解决方法
  5. crontab执行shell脚本
  6. Message,MessageQueue,Looper,Handler详解+实例
  7. NodeJS:树的序列化
  8. HDU 3446 daizhenyang&#39;s chess
  9. CGAffineTransformMake(a,b,c,d,tx,ty) 矩阵运算的原理 (转载)
  10. iOS计算文本高度
  11. 使用COM提供SafeArray数据
  12. lua os.date函数定义和示例
  13. 递归,re,time,random
  14. latex中插入eps文件
  15. request鉴权的处理和判断
  16. 移动端tap与click的区别 &amp;&amp; 点透事件
  17. 英文写作强调技巧:alliteration, assonance, consonance
  18. ecmall 支付成功 订单状态没有改变解决办法
  19. JSON数据的各种操作
  20. BZOJ4269:再见Xor(线性基)

热门文章

  1. 服务治理-&gt; Spring Cloud Eureka
  2. PLSQL函数,存储过程
  3. git解决代码提交冲突
  4. Python 3 利用 Dlib 实现摄像头实时人脸检测和平铺显示
  5. windows的滚动条使用
  6. 1042 Shuffling Machine
  7. XGB算法梳理
  8. Go单元测试注意事项及测试单个方法和整个文件的命令
  9. centos6.9+lnmp1.5环境部署swoole记录
  10. bootstrap轮播图不能显示左右箭头