Time:2016.08.27
Author:xiaoyimi
转载注明出处谢谢


传送门
思路:
与游走思路有一定相似的地方
对答案的每一位进行判断
通过高斯消元解出每个点到n xor路径为1的概率
对于关于第i个点的方程来说
第i项系数为f[i][i]=-1,其他项j为
⎧⎩⎨⎪⎪⎪⎪⎪⎪0=>不存在e(i,j)或j=nf[i][j]d[j]=>存在e(i,j)且w[e]在当前位为01−f[i][j]d[j]=>存在e(i,j)且w[e]在当前位为1 \begin{cases} 0=>不存在e(i,j)或j=n\\ \frac{f[i][j]} {d[j]}=>存在e(i,j)且w[e]在当前位为0\\ \frac{1-f[i][j]} {d[j]}=>存在e(i,j)且w[e]在当前位为1 \end{cases}
然后高斯消元解就可以了,答案就是∑30i=1ans[1]⋅2i\sum^{30}_{i=1}ans[1]·2^i
复杂度O(30⋅n3)O(30·n^3)
注意自环时只加一条边而不是双向边
注意重边时要多次累加方程的系数
代码:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#define M 10005
#define eps 1e-5
using namespace std;
int n,m,tot;
struct edge{int u,v,w,next;
}e[M<<1];
int first[105],d[105];
double f[105][105],ans[105],sum;
void add(int x,int y,int z)
{e[++tot]=(edge){x,y,z,first[x]};first[x]=tot;++d[x];if (x==y) return;e[++tot]=(edge){y,x,z,first[y]};first[y]=tot;++d[y];
}
void gauss()
{int t;double p;for (int i=1;i<n;++i){t=i;for (int j=i+1;j<=n;++j)if (fabs(f[t][i])<fabs(f[j][i])) t=j;if (t!=i)for (int j=i;j<=n+1;++j)swap(f[t][j],f[i][j]);for (int j=i+1;j<=n;++j){p=f[j][i]/f[i][i];for (int k=i+1;k<=n+1;++k)f[j][k]-=f[i][k]*p;}}for (int i=n;i;--i){p=0;for (int j=i+1;j<=n;++j) p+=ans[j]*f[i][j];ans[i]=(f[i][n+1]-p)/f[i][i]; }
}
main()
{scanf("%d%d",&n,&m);int x,y,z;for (int i=1;i<=m;++i)scanf("%d%d%d",&x,&y,&z),add(x,y,z);for (int i=30;i>=0;--i){memset(f,0,sizeof(f));for (int j=1;j<n;++j)for (int k=first[j];k;k=e[k].next)if (e[k].w>>i&1)f[j][n+1]-=1.0/d[j],f[j][e[k].v]-=1.0/d[j];elsef[j][e[k].v]+=1.0/d[j];for (int j=1;j<=n;++j) --f[j][j];gauss();sum+=ans[1]*(1<<i);}printf("%.3lf\n",sum);
}

【BZOJ2337】XOR和路径,概率期望DP+高斯消元相关推荐

  1. 洛谷 P3211 [HNOI2011]XOR和路径(推dp+高斯消元)

    传送门 首先,异或的话直接讨论不好讨论,那么我们可以按位讨论,对于每一位讨论出来一个结果,然后将结果相加就好了. 然后考虑怎么讨论一位上的结果. 我们可以设出来一个dp方程:f(i)表示i到n的异或和 ...

  2. LightOJ 1151 Snakes and Ladders (期望DP + 高斯消元)

    Description 'Snakes and Ladders' or 'Shap-Ludu' is a game commonly played in Bangladesh. The game is ...

  3. 【BZOJ1778】[Usaco2010 Hol]Dotp 驱逐猪猡 期望DP+高斯消元

    [BZOJ1778][Usaco2010 Hol]Dotp 驱逐猪猡 Description 奶牛们建立了一个随机化的臭气炸弹来驱逐猪猡.猪猡的文明包含1到N (2 <= N <= 300 ...

  4. P4457-[BJOI2018]治疗之雨【期望dp,高斯消元】

    正题 题目链接:https://www.luogu.com.cn/problem/P4457 题目大意 开始一个人最大生命值为nnn,剩余hphphp点生命,然后每个时刻如果生命值没有满那么有1m+1 ...

  5. ICPC 2005 hangzhou Generator (UVA1358)KMP + 期望DP / 高斯消元

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Generator Weblink https://www.luogu.com.cn/problem/ ...

  6. BZOJ 1778 Usaco2010 Hol Dotp 驱逐猪猡 期望DP+高斯消元

    题目大意:给定一个无向图,炸弹从1号节点出发,每个时刻有P/Q的概率爆炸,如果某个时刻没有爆炸,就会等概率沿着随机一条出边走到下一个城市,求最终每个城市的爆炸概率 #include <cmath ...

  7. 【BZOJ3640】JC的小苹果 概率DP+高斯消元

    [BZOJ3640]JC的小苹果 Description 让我们继续JC和DZY的故事. "你是我的小丫小苹果,怎么爱你都不嫌多!" "点亮我生命的火,火火火火火!&qu ...

  8. BZOJ_1778_[Usaco2010 Hol]Dotp 驱逐猪猡_概率DP+高斯消元

    BZOJ_1778_[Usaco2010 Hol]Dotp 驱逐猪猡_概率DP+高斯消元 题意: 奶牛们建立了一个随机化的臭气炸弹来驱逐猪猡.猪猡的文明包含1到N (2 <= N <= 3 ...

  9. 【bzoj1778】[Usaco2010 Hol]Dotp 驱逐猪猡 矩阵乘法+概率dp+高斯消元

    题目描述 奶牛们建立了一个随机化的臭气炸弹来驱逐猪猡.猪猡的文明包含1到N (2 <= N <= 300)一共N个猪城.这些城市由M (1 <= M <= 44,850)条由两 ...

最新文章

  1. Regular Expression Matching
  2. 有5个学生,4门课程,用子函数的方法显示平均分最高的学生的所有成绩
  3. Go语言中的Struct
  4. 3D打印机分类与速度
  5. 每次没事情的时候都去学校的活动室或者武术室
  6. 如何高效学习Java?本文给你一些建议!
  7. gcc undefined reference to 问题解决方法(使用库)
  8. 关系代数的自然连接符号_初中数学知识清单之代数式的认识
  9. 如何通过Restful API的方式读取SAP Commerce Cloud的Product Reference
  10. Vss服务端用户存在,但客户端登陆不进去
  11. 工作44:阅读代码1 dictionary
  12. Java描述设计模式(22):策略模式
  13. 中文版Visual Studio 2008 SP1 智能提示为英文的补丁发布
  14. 拼多多加大百亿补贴力度,iPhone 12中配版券后价5899元
  15. java 搜索起始位置,从Java中的给定位置搜索字符
  16. .Net控件Telerik全套下载:Telerik Controls 2010 Q2 (附加DLL文件+源码)
  17. LeetCode 64.最小路径和(动态规划)
  18. svn 命令行_Ubuntu下Subversion(SVN)的快速安装与配置
  19. 添加几行代码实现百度文库的复制
  20. IOUtils工具类的依赖maven

热门文章

  1. 爬虫智能解析库 Readability 和 Newspaper 的用法
  2. java定时任务管理_基于SpringBoot+layui秒级定时任务管理:JTimer for JAVA项目
  3. 关于三星某些系列笔记本电脑无法安装Windows10的原因及解决办法
  4. 解决 git pull/push 每次都要输入用户名密码的问题
  5. day16 java中的package和import
  6. vue v-for循环动态获取_快速、简洁讲明Vue中vfor循环key的作用
  7. oracle餐饮权,初秋来临,献上餐饮数字化经营的“暖心大餐”
  8. ajax jsonp post php,※ajax的post方式注意点※及jsonp的封装
  9. esxi 5.5运行linux拯救模式,启用Esxi 5.5 SSH 功能
  10. 封装 电流密度 重布线_具有周边硅通孔的晶圆级芯片封装有限元分析