博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj千题计划191:bzoj2337: [HNOI2011]XOR和路径
阅读量:7243 次
发布时间:2019-06-29

本文共 1005 字,大约阅读时间需要 3 分钟。

 

概率不能异或

但根据期望的线性,可以计算出每一位为1的概率,再累积他们的期望

枚举每一位i,现在要计算从1出发第i位异或和为1的概率

令f[u]表示从点u出发,第i为为1的概率

d[u]表示u的度数

枚举与u相连的v

若边权的第i位为1,那么v的第i位为0,f[u]+=(1-f[v])/d[u]

若边权的第i位为0,那么v的第i位为1,f[u]+=f[v]/d[u]

还有一个f[n]=0

将这n个式子,f[i]看做未知数,1/d[i]看做系数

把f[i]都移到左边,1/d 都移到右边

得到n个方程,高斯消元解出来

 

#include
#include
#include
#include
#include
using namespace std;#define N 101#define M 10001const double eps=1e-7;int n;int d[N];int to[M<<1],nxt[M<<1],front[N],val[M<<1],tot;double a[N][N];int bit[31];void read(int &x){ x=0; char c=getchar(); while(!isdigit(c)) c=getchar(); while(isdigit(c)) { x=x*10+c-'0'; c=getchar(); }}void add(int u,int v,int w){ to[++tot]=v; nxt[tot]=front[u]; front[u]=tot; val[tot]=w;}void gauss(){ int r; double f; for(int i=0;i
abs(a[r][i])) r=j; if(r!=i) swap(a[r],a[i]); for(int k=i+1;k
=0;--i) { for(int j=i+1;j

 

转载于:https://www.cnblogs.com/TheRoadToTheGold/p/8192404.html

你可能感兴趣的文章
HDU-4033 Fruit Ninja 几何 二分搜索
查看>>
POJ-1057 FILE MAPPING 恶心模拟
查看>>
SpringMVC 之数据转换和国际化
查看>>
(Struts)ActionForm类及表单数据验证
查看>>
【php】phpExcel使用教程,如何导出excel表格
查看>>
PHP获取二维数组中某一列的值集合
查看>>
draft数据保存
查看>>
python自动化测试(2)-自动化基本技术原理
查看>>
iOS之网络数据下载和JSON解析
查看>>
ios图片剪切
查看>>
点滴积累(持续更新)
查看>>
Linux添加用户user到用户组group
查看>>
Github上传自己的工程
查看>>
mac svn 终端操作命令
查看>>
为什么没有选择sipml5
查看>>
如何利用配置方式配置SMTP发送邮件
查看>>
GYM 101522B. Bacteria Experiment
查看>>
剑指Offer - 平衡二叉树
查看>>
Python3编写网络爬虫07-基本解析库pyquery的使用
查看>>
用OpenSSL命令行生成证书文件
查看>>