【BZOJ】2337: [HNOI2011]XOR和路径 期望+高斯消元
【题意】给定n个点m条边的带边权无向连通图(有重边和自环),在每个点随机向周围走一步,求1到n的期望路径异或值。n<=100,wi<=10^9。
【算法】期望+高斯消元
【题解】首先异或不满足期望的线性,所以考虑拆位。
对于每一个二进制位,经过边权为0仍是x,经过边权为1变成1-x(转化成减法才满足期望的线性)。
设f[x]表示点x到n的路径xor期望,f[n]=0,根据全期望公式:
$$f[i]=\sum_{j}\frac{f[j]}{out[i]}\ \ , \ \ w(i,j)=0$$
$$f[i]=\sum_{j}\frac{1-f[j]}{out[i]}\ \ , \ \ w(i,j)=1$$
因为有循环所以用高斯消元求解,复杂度O(n^3*log wi)。
- #include<cstdio>
- #include<cstring>
- #include<cmath>
- #include<algorithm>
- using namespace std;
- const int maxn=;
- struct edge{int v,w,from;}e[maxn*maxn*];
- int n,m,first[maxn],tot,out[maxn];
- long double a[maxn][maxn],ans;
- void insert(int u,int v,int w){tot++;e[tot].v=v;e[tot].w=w;e[tot].from=first[u];first[u]=tot;out[u]++;}
- void gauss(){
- for(int i=;i<n;i++){
- int r=i;
- for(int j=i+;j<=n;j++)if(fabs(a[j][i])>fabs(a[r][i]))r=j;
- if(r!=i)for(int j=i;j<=n+;j++)swap(a[i][j],a[r][j]);
- for(int j=i+;j<=n;j++)
- for(int k=n+;k>=i;k--)
- a[j][k]-=a[j][i]/a[i][i]*a[i][k];
- }
- for(int i=n;i>=;i--){
- for(int j=i+;j<=n;j++)a[i][n+]-=a[i][j]*a[j][n+];
- a[i][n+]/=a[i][i];
- }
- }
- int main(){
- scanf("%d%d",&n,&m);
- for(int i=;i<=m;i++){
- int u,v,w;
- scanf("%d%d%d",&u,&v,&w);
- insert(u,v,w);
- if(u!=v)insert(v,u,w);//
- }
- for(int k=;k<=;k++){
- memset(a,,sizeof(a));//
- for(int x=;x<n;x++){
- for(int i=first[x];i;i=e[i].from){
- if(e[i].w&(<<k)){
- a[x][e[i].v]--;//
- a[x][n+]--;
- }
- else a[x][e[i].v]++;
- }
- a[x][x]-=out[x];//
- }
- a[n][n]=;
- gauss();
- ans+=a[][n+]*(<<k);
- }
- printf("%.3Lf",ans);
- return ;
- }
注意:
1.方程组右边是常数项。
2.自环不要重复加边。
【BZOJ】2337: [HNOI2011]XOR和路径 期望+高斯消元的更多相关文章
- bzoj 2337 [HNOI2011]XOR和路径【高斯消元+dp】
首先,我们发现,因为是无向图,所以相连的点之间是有"依赖性"的,所以不能直接用dp求解. 因为是xor,所以按位处理,于是列线性方程组,设$ x[i] $为点i到n异或和为1的期望 ...
- BZOJ2337: [HNOI2011]XOR和路径(期望 高斯消元)
题意 题目链接 Sol 期望的线性性对xor运算是不成立的,但是我们可以每位分开算 设\(f[i]\)表示从\(i\)到\(n\)边权为1的概率,统计答案的时候乘一下权值 转移方程为 \[f[i] = ...
- BZOJ 2337 [HNOI2011]XOR和路径 ——期望DP
首先可以各位分开求和 定义$f(i)$表示从i到n的期望值,然后经过一些常识,发现$f(n)=1$的时候的转移,然后直接转移,也可以找到$f(n)=0$的转移. 然后高斯消元31次就可以了. #inc ...
- [BZOJ2337][HNOI2011]XOR和路径(概率+高斯消元)
直接不容易算,考虑拆成位处理. 设f[i]表示i到n的期望路径异或和(仅考虑某一位),则$f[y]=\sum\limits_{exist\ x1\to y=0}\frac{f[x1]}{d[x1]}+ ...
- 【BZOJ2337】Xor和路径(高斯消元)
[BZOJ2337]Xor和路径(高斯消元) 题面 BZOJ 题解 我应该多学点套路: 对于xor之类的位运算,要想到每一位拆开算贡献 所以,对于每一位拆开来看 好了,既然是按位来算 我们就只需要计算 ...
- BZOJ 2337: [HNOI2011]XOR和路径 [高斯消元 概率DP]
2337: [HNOI2011]XOR和路径 题意:一个边权无向连通图,每次等概率走向相连的点,求1到n的边权期望异或和 这道题和之前做过的高斯消元解方程组DP的题目不一样的是要求期望异或和,期望之间 ...
- 【概率DP/高斯消元】BZOJ 2337:[HNOI2011]XOR和路径
2337: [HNOI2011]XOR和路径 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 682 Solved: 384[Submit][Stat ...
- BZOJ 2337: [HNOI2011]XOR和路径( 高斯消元 )
一位一位考虑异或结果, f(x)表示x->n异或值为1的概率, 列出式子然后高斯消元就行了 --------------------------------------------------- ...
- 【BZOJ】3143: [Hnoi2013]游走 期望+高斯消元
[题意]给定n个点m条边的无向连通图,每条路径的代价是其编号大小,每个点等概率往周围走,要求给所有边编号,使得从1到n的期望总分最小(求该总分).n<=500. [算法]期望+高斯消元 [题解] ...
随机推荐
- View 渲染
在Spring MVC 中,controllers不负责具体的页面渲染,仅仅是调用业务逻辑并返回model数据给view层,至于view层具体怎么展现,由专门的view层具体负责,这就是MVC模式,业 ...
- 使用ssh公钥登陆
记录一下使用的具体命令,具体参考: Centos设置禁止密码登录而只使用密钥登录SSH方法 优先参考这个. ssh使用公钥授权不通过的问题解决 Xshell配置ssh免密码登录-密钥公钥(Publi ...
- rabbitmqctl 的常用命令
# 查看服务器的状态 rabbitmqctl status # 查看环境变量 rabbitmqctl environment # 停止rabbitmq的应用 rabbitmqctl stop_ ...
- SpringMVC源码剖析(五)-消息转换器HttpMessageConverter
原文链接:https://my.oschina.net/lichhao/blog/172562 #概述 在SpringMVC中,可以使用@RequestBody和@ResponseBody两个注解,分 ...
- 【.Net】vs2017 自带发布工具 ClickOnce发布包遇到的问题
一.遇到的问题 在安装了vs2017 社区版(Community)之后 想打包安装程序(winform) 还是想用之前的 installshield来打包 发现居然打不了,在官网查了 ins ...
- BZOJ 1226 学校食堂(状压DP)
状压DP f(i,j,k)表示前i−1个人已经吃了饭,且在i之后的状态为j的人也吃了饭(用二进制表示后面的状态),最后吃的那个人是i之后的第k个 (注意k可以是负数) 然后 如果j&1=1那么 ...
- BZOJ3717 PA2014Pakowanie(状压dp)
显然贪心地有尽量先往容量大的背包里放.设f[i]为i子集物品最小占用背包数,g[i]为该情况下最后一个背包的剩余容量,转移显然. #include<iostream> #include&l ...
- Redis学习笔记一:Redis安装
Redis安装 1.下载进入redis官网下载redis-xxx.tar.gz包 2.将redis-xxx.tar.gz拷贝到Linux某一目录下并对其进行解压 tar -zxvf Redis-xxx ...
- Unity3D for VR 学习(10): Unity LOD Group 组件
LOD (Level of Detail), 远小近大思想. LOD,在Unity中是用到了空间换时间的优化方法:即程序加载2套模型,导致包会增大:在运行时刻,远处的用面数少的模型–模糊一些,近处用面 ...
- 洛谷 P4319 变化的道路 解题报告
P4319 变化的道路 题目描述 小 w 和小 c 在 H 国,近年来,随着 H 国的发展,H 国的道路也在不断变化着 根据 H 国的道路法,H 国道路都有一个值 \(w\),表示如果小 w 和小 c ...