2337:[HNOI2011]XOR和路径 - BZOJ

昨天才做了一道高斯消元,一下要精度判断,一下又不要精度判断
主要是思路很重要
很容易想到每一个二进制位算一个概率,然后求和,设f[i]为走到从i走到n这一个二进制位为1的概率
f[i]:=∑{f[j]/d[i](i到j的路径这一位是0),(1-f[j])/d[i],(i到j的路径这一位是1)}(f[n]直接设为0)
var
f:array[..,..]of extended;
d:array[..]of longint;
v,u,w:array[..]of longint;
ans:extended;
n,m:longint; procedure swap(var x,y:extended);
var
t:extended;
begin
t:=x;
x:=y;
y:=t;
end; procedure init;
var
i:longint;
begin
read(n,m);
for i:= to m do
begin
read(v[i],u[i],w[i]);
inc(d[v[i]]);
inc(d[u[i]]);
if u[i]=v[i] then dec(d[u[i]]);
end;
end; procedure work;
var
t,i,j,k:longint;
s:extended;
begin
for t:= to do
begin
for i:= to n do
for j:= to n+ do
f[i,j]:=;
for i:= to n do
f[i,i]:=;
for i:= to m do
if w[i]and(<<t)= then
begin
f[v[i],u[i]]:=f[v[i],u[i]]-/d[v[i]];
f[u[i],v[i]]:=f[u[i],v[i]]-/d[u[i]];
if u[i]=v[i] then f[v[i],v[i]]:=f[u[i],u[i]]+/d[v[i]];
end
else
begin
f[v[i],u[i]]:=f[v[i],u[i]]+/d[v[i]];
f[u[i],v[i]]:=f[u[i],v[i]]+/d[u[i]];
f[v[i],n+]:=f[v[i],n+]+/d[v[i]];
f[u[i],n+]:=f[u[i],n+]+/d[u[i]];
if v[i]=u[i] then
begin
f[u[i],v[i]]:=f[u[i],v[i]]-/d[u[i]];
f[v[i],n+]:=f[v[i],n+]-/d[v[i]];
end;
end;
for i:= to n- do
begin
for j:=i to n- do
if f[j,i]<> then break;
for k:=i to n+ do
swap(f[i,k],f[j,k]);
for j:=i+ to n- do
if abs(f[j,i])> then
begin
s:=f[j,i]/f[i,i];
f[j,i]:=;
for k:=i+ to n+ do
f[j,k]:=f[j,k]-s*f[i,k];
end;
end;
for i:=n- downto do
begin
for j:=i+ to n- do
f[i,n+]:=f[i,n+]-f[j,]*f[i,j];
f[i,]:=f[i,n+]/f[i,i];
end;
ans:=ans+f[,]*(<<t);
end;
write(ans::);
end;
2337:[HNOI2011]XOR和路径 - BZOJ的更多相关文章
- 【概率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 2337: [HNOI2011]XOR和路径 [高斯消元 概率DP]
2337: [HNOI2011]XOR和路径 题意:一个边权无向连通图,每次等概率走向相连的点,求1到n的边权期望异或和 这道题和之前做过的高斯消元解方程组DP的题目不一样的是要求期望异或和,期望之间 ...
- 【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和路径 期望+高斯消元
[题意]给定n个点m条边的带边权无向连通图(有重边和自环),在每个点随机向周围走一步,求1到n的期望路径异或值.n<=100,wi<=10^9. [算法]期望+高斯消元 [题解]首先异或不 ...
- bzoj 2337: [HNOI2011]XOR和路径
Description Input Output Sample Input Sample Output HINT Source Day2 终于把这个史前遗留的坑给填了... 首先异或的话由位无关性,可 ...
- ●BZOJ 2337 [HNOI2011]XOR和路径
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=2337题解: 概率dp, 因为异或的每一位之间没有关系,我们就依次考虑每一位k.(即边权要么为 ...
- bzoj 2337 [HNOI2011]XOR和路径【高斯消元+dp】
首先,我们发现,因为是无向图,所以相连的点之间是有"依赖性"的,所以不能直接用dp求解. 因为是xor,所以按位处理,于是列线性方程组,设$ x[i] $为点i到n异或和为1的期望 ...
- BZOJ 2337 [HNOI2011]XOR和路径 ——期望DP
首先可以各位分开求和 定义$f(i)$表示从i到n的期望值,然后经过一些常识,发现$f(n)=1$的时候的转移,然后直接转移,也可以找到$f(n)=0$的转移. 然后高斯消元31次就可以了. #inc ...
随机推荐
- getBoundingClientRect()兼容性处理
getBoundingClientRect() 这个方法返回一个矩形对象,包含四个属性:left.top.right和bottom.分别表示元素各边与页面上边和左边的距离. var box=docum ...
- SAX - DefaultHandler
org.xml.sax.helpers.DefaultHandler 实现了 org.xml.sax.EntityResolver.org.xml.sax.DTDHandler.org.xml.sax ...
- angular的post请求,SpringMVC后台接收不到参数值的解决方案
这是我后台SpringMVC控制器接收isform参数的方法,只是简单的打出它的值: @RequestMapping(method = RequestMethod.POST) @ResponseBod ...
- 本地安装discuz
出处:http://jingyan.baidu.com/article/b87fe19eb57ff252183568d9.html 网站建目前都很简单,建站容易,管理难,网站做大优化更难.本人有建站经 ...
- META 标签的使用
<meta />标记详解 说明: meta是一个单边标签 ,主要功能:是用于设置或显示一些控制信息,告诉浏览器以什么编码显示. <meta>标记有两个主要的属性: http-e ...
- lex&yacc 9
the "line 15: error: syntax error" cant stop, if i test the statement "i<=0" ...
- Centos下如何修改Mysql的root密码
1.用帐号登录mysql mysql –u root 或#mysql –uroot –p 2.改变用户数据库 命令:mysql>use mysql mysql> use mysqlRead ...
- 【Winform】 无法将类型为“System.Windows.Forms.SplitContainer”的对象强制转换为类型“System.ComponentModel.ISupportInitialize”。
问题:将dotnet framework 4.0 切换到2.0时,编译没有问题,在运行时出现如下错误:System.InvalidCastException: 无法将类型为“System.Window ...
- centos6.4下安装freetds使php支持mssql
centos版本:6.4 php版本5.3.17 没有安装之前的情况:nginx+php+mysql+FPM-FCGI 接下来安装步骤如下: 1.打开http://www.freetds.org/,进 ...
- C# 学习之旅(1)
第一, 输入输出流都来自控制台. using System; using System.Collections.Generic; using System.Linq; using System.Tex ...