bzoj 2337
有人说这题像游走...
关于游走的思想,他死了...
明明直接从期望dp的角度考虑更简单合理嘛
首先由于是异或运算不妨逐位考虑
对于每一位,设状态$f[i]$表示从第$i$个点到第$n$个点,这一位上是$1$的概率
那么我们按边权讨论转移:
若这条边边权为$1$:$f[i]+=\frac{1-f[to]}{deg_{i}}$
若这条边边权为$0$:$f[i]+=\frac{f[to]}{deg_{i}}$
可是本题转移是成环的,因此直接dp是行不通的
但是我们可以考虑高斯消元嘛!
上面那个表达式很显然是个方程组,高斯消元解之即可!
整理一下,就得到了:$deg_{i}f[i]+[v_{i,to}==1]f[to]-[v_{i,to}==0]f[to]=\sum_{v_{i,to}==1}1$
(其实就是整合一下上面两个表达式,移个项就出来了)
算出$f[1]$乘贡献即可
(所以这题根本不需要基于点考虑边,只需要考虑点就可以了!不用研究边的期望!)
贴代码:
#include <cstdio>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <queue>
#include <stack>
#include <vector>
using namespace std;
double eps=1e-8;
struct Edge
{
int nxt;
int to;
int val;
}edge[20005];
int head[105];
double inr[105];
double a[105][105];
int n,m,cnt=1;
double ans=0;
void add(int l,int r,int w)
{
edge[cnt].nxt=head[l];
edge[cnt].to=r;
edge[cnt].val=w;
head[l]=cnt++;
inr[l]++;
}
void Gauss()
{
for(int i=1;i<=n;i++)
{
int temp=i;
while(fabs(a[temp][i])<=eps)temp++;
if(temp!=i)for(int j=i;j<=n;j++)swap(a[i][j],a[temp][j]);
double now=a[i][i];
for(int j=i;j<=n+1;j++)a[i][j]/=now;
for(int j=i+1;j<=n;j++)
{
if(fabs(a[j][i])<=eps)continue;
now=a[j][i];
for(int k=i;k<=n+1;k++)a[j][k]-=now*a[i][k];
}
}
for(int i=n;i>=1;i--)for(int j=i-1;j>=1;j--)a[j][n+1]-=a[i][n+1]*a[j][i];
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);
if(x!=y)add(y,x,z);
}
for(int k=0;k<=30;k++)
{
memset(a,0,sizeof(a));
for(int i=1;i<=n-1;i++)
{
a[i][i]=inr[i];
for(int j=head[i];j;j=edge[j].nxt)
{
int to=edge[j].to;
if(edge[j].val&(1<<k))a[i][to]+=1.0,a[i][n+1]+=1.0;
else a[i][to]-=1.0;
}
}
a[n][n]=1;
Gauss();
ans+=a[1][n+1]*(1<<k);
}
printf("%.3lf\n",ans);
return 0;
}
bzoj 2337的更多相关文章
- BZOJ 2337 XOR和路径 | 高斯消元 期望 位运算
BZOJ 2337 XOR和路径 题解 这道题和游走那道题很像,但又不是完全相同. 因为异或,所以我们考虑拆位,分别考虑每一位: 设x[u]是从点u出发.到达点n时这一位异或和是1的概率. 对于所有这 ...
- 【概率DP/高斯消元】BZOJ 2337:[HNOI2011]XOR和路径
2337: [HNOI2011]XOR和路径 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 682 Solved: 384[Submit][Stat ...
- BZOJ 2337 XOR和路径(高斯消元)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2337 题意:给定一个带权无向图.从1号点走到n号点.每次从当前点随机(等概率)选择一条相 ...
- BZOJ 2337: [HNOI2011]XOR和路径( 高斯消元 )
一位一位考虑异或结果, f(x)表示x->n异或值为1的概率, 列出式子然后高斯消元就行了 --------------------------------------------------- ...
- BZOJ 2337: [HNOI2011]XOR和路径 [高斯消元 概率DP]
2337: [HNOI2011]XOR和路径 题意:一个边权无向连通图,每次等概率走向相连的点,求1到n的边权期望异或和 这道题和之前做过的高斯消元解方程组DP的题目不一样的是要求期望异或和,期望之间 ...
- ●BZOJ 2337 [HNOI2011]XOR和路径
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=2337题解: 概率dp, 因为异或的每一位之间没有关系,我们就依次考虑每一位k.(即边权要么为 ...
- 【BZOJ 2337】 2337: [HNOI2011]XOR和路径(概率DP、高斯消元)
2337: [HNOI2011]XOR和路径 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1170 Solved: 683 Description ...
- bzoj 2337: [HNOI2011]XOR和路径
Description Input Output Sample Input Sample Output HINT Source Day2 终于把这个史前遗留的坑给填了... 首先异或的话由位无关性,可 ...
- BZOJ 2337 XOR和路径(概率DP)
求点1到点n经过的路径权值异或和的期望. 考虑按位计算,对于每一位来说,令dp[i]表示从i到n的异或和期望值. 那么dp[i]=sum(dp[j]+1-dp[k]).如果w(i,j)这一位为0,如果 ...
- BZOJ 2337 [HNOI2011]XOR和路径 ——期望DP
首先可以各位分开求和 定义$f(i)$表示从i到n的期望值,然后经过一些常识,发现$f(n)=1$的时候的转移,然后直接转移,也可以找到$f(n)=0$的转移. 然后高斯消元31次就可以了. #inc ...
随机推荐
- 小白之Python-基础中的基础02
Python-基础中的基础02 继续整理笔记,反复练习!fighting! -----------------华丽的分界线-------------变量:第一次出现叫做定义变量,再次出现为为该变量赋值 ...
- 01_Node的版本管理
Node的版本管理工具 常见的node的版本管理工具有两种N.NVM 但是他们有一个致命的问题就是不支持Windwos 但是NVM延申了一个nvm-windows的版本,他就可以很好的支持window ...
- IaaS--云虚拟机(二)(何恺铎《深入浅出云计算》笔记整理)
[如何挑选合适的虚拟机型号] 1.根据类型.云厂商会提供均衡型.计算密集型.内存优化型.图形计算型等常见的虚拟机类型.这些类型对应着硬件资源的某种合理配比或针对性强化,方便你在面向不同场景时,选择最合 ...
- 读后笔记 -- Java核心技术(第11版 卷 II) Chapter3 XML
3.1 XML Introduction An XML document is made up of elements. An element can have attributes (key/val ...
- python中的KeyError报错
from util import str_util #业务逻辑:兼容不同的结构体:resCode转化数据 #检查字典中是否存在键 if 'resCode' not in resultJson if ' ...
- Mybatis动态SQL语句大全
读完这篇文章里你能收获到 Mybatis动态SQL语句大全 Mybatis中如何定义变量 Mybatis中如何提取公共的SQL片段 1. If 语句 需求:根据作者名字和博客名字来查询博客!如果作者名 ...
- Vim文本编码之坑
#20220503更新# 今天又遇到一个问题,即常见的"cat显示正常,vi显示异常"的问题. 有这样一个文件,它的编码是UTF-16(DOS),在windows下用UltraEd ...
- AutoMapper在.Net Core WebApi中使用
在.Net Core WebApi 里使用AutoMapper 1. 安装AutoMapper管理包 注意:service层中安装 WebApi层也需要安装 因为Webpi层有时候也需要用到Dto ...
- Java 类实现接口
1. 一个类的直接父类是唯一的,但是一个类可以同时实现多个接口 public class MyInterfaceImpl implements MyInterfaceA, MyInterfaceB { ...
- Dynamics 365 CRM 弹窗 打开自定义页面 Xrm.Navigation.navigateTo Open Web Resource
在CRM中经常需要打开自定义的HTML界面,而且打开这个界面的时候需要模态窗体,阻止用户填写除了弹窗之外的东西,只能先填写窗体的内容: 这个时候很多人喜欢选择第三方的library去实现模态窗体,但是 ...