2337: [HNOI2011]XOR和路径

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 682  Solved: 384
[Submit][Status][Discuss]

Description


  几乎是一路看题解过来了。。
  拖了一个星期的题目- -
  已然不会概率DP(说得好像什么时候会过一样),高斯消元(打一次copy一遍)。
  发现异或题目的新解决方法:按位处理。。
  发现DP新方法:高斯消元。
  f[k][i]代表第k位权值起点为i到终点时答案的期望值。
  则对一条边<i,j>有两种转移:当边权为0,f[k][j]/deg[i].当边权为1,(1-f[k][j])/deg[i]。
  由于是一个无向图。
  topo DP很不好搞。
  只能高斯消元。
 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath> using namespace std; struct edge{
int to,c,last;
}edge[]; int last[],tot=,in[],n; double f[][],V[]; inline int read()
{
int x=;char ch=getchar();
while(ch<''||ch>'')ch=getchar();
while(ch<=''&&ch>='')x=x*+ch-'',ch=getchar();
return x;
} void add(int u,int v,int c)
{
edge[++tot].to=v,edge[tot].last=last[u],edge[tot].c=c,last[u]=tot;
in[u]++;
} void chan(int a,int b)
{
for(int i=;i<=n+;i++)
swap(f[a][i],f[b][i]);
} double gauss()
{
for(int i=;i<=n;i++)
{
if(!f[i][i])
{
for(int j=i+;j<=n;j++)
if(f[i][j])
chan(i,j);
}
for(int j=;j<=n;j++)
{
if(i==j)continue;
double xi=f[j][i]/f[i][i];
for(int k=;k<=n+;k++)f[j][k]-=xi*f[i][k];
}
}
return f[][n+]/f[][];
} int main()
{
int m,u,v,c;
n=read(),m=read();
for(int i=;i<=m;i++)
{
u=read();v=read();c=read();
add(u,v,c);
if(u!=v)add(v,u,c);
}
for(int i=;i<;i++)
{
for(int j=;j<n;j++)
{
f[j][j]=;
for(int k=last[j];k;k=edge[k].last)
{
if(edge[k].c&(<<i))f[j][edge[k].to]+=(double)1.0/in[j],f[j][n+]+=(double)1.0/in[j];
else f[j][edge[k].to]-=(double)1.0/in[j];
}
}
f[n][n]=;
V[i]=gauss();
memset(f,,sizeof(f));
}
double ans=;
int cnt=;
for(int i=;i<;i++)ans+=cnt*V[i],cnt*=;
printf("%.3lf",ans);
return ;
}

【概率DP/高斯消元】BZOJ 2337:[HNOI2011]XOR和路径的更多相关文章

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

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

  2. LightOJ - 1151概率dp+高斯消元

    概率dp+高斯消元 https://vjudge.net/problem/LightOJ-1151 题意:刚开始在1,要走到100,每次走的距离1-6,超过100重来,有一些点可能有传送点,可以传送到 ...

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

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

  4. BZOJ3270 博物館 概率DP 高斯消元

    BZOJ3270 博物館 概率DP 高斯消元 @(XSY)[概率DP, 高斯消元] Description 有一天Petya和他的朋友Vasya在进行他们众多旅行中的一次旅行,他们决定去参观一座城堡博 ...

  5. BZOJ 2337: [HNOI2011]XOR和路径 [高斯消元 概率DP]

    2337: [HNOI2011]XOR和路径 题意:一个边权无向连通图,每次等概率走向相连的点,求1到n的边权期望异或和 这道题和之前做过的高斯消元解方程组DP的题目不一样的是要求期望异或和,期望之间 ...

  6. BZOJ 2337: [HNOI2011]XOR和路径( 高斯消元 )

    一位一位考虑异或结果, f(x)表示x->n异或值为1的概率, 列出式子然后高斯消元就行了 --------------------------------------------------- ...

  7. BZOJ 3270: 博物馆 [概率DP 高斯消元]

    http://www.lydsy.com/JudgeOnline/problem.php?id=3270 题意:一张无向图,一开始两人分别在$x$和$y$,每一分钟在点$i$不走的概率为$p[i]$, ...

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

    [BZOJ3640]JC的小苹果 Description 让我们继续JC和DZY的故事. “你是我的小丫小苹果,怎么爱你都不嫌多!” “点亮我生命的火,火火火火火!” 话说JC历经艰辛来到了城市B,但 ...

  9. bzoj 2337 [HNOI2011]XOR和路径【高斯消元+dp】

    首先,我们发现,因为是无向图,所以相连的点之间是有"依赖性"的,所以不能直接用dp求解. 因为是xor,所以按位处理,于是列线性方程组,设$ x[i] $为点i到n异或和为1的期望 ...

随机推荐

  1. 为 HTML 添加新元素

    你可以为 HTML 添加新的元素. 该实例向 HTML 添加的新的元素,并为该元素定义样式,元素名为 <myHero> : 实例 <!DOCTYPE html> <htm ...

  2. ThinkPHP整合支付宝即时到账接口调用

    首先是在支付宝的蚂蚁金服开放平台下载PHP的demo: https://doc.open.alipay.com/doc2/detail?treeId=62&articleId=103566&a ...

  3. Fragment的创建以及与activity的参数传递

    点击下面不同的TextView变化不同的Fragment avtivity与Fragment之间传递消息不能使用构造器传递,用bunder传递 首先写一个含有FrameLayout(这个布局最佳),里 ...

  4. Delphi的"Invalid pointer operation"异常的解决办法

    今天用Delphi编写了个dll,用到了TStringList来传递多参数,如下: [delphi] view plaincopy 01.function DBM_SetParam(procName: ...

  5. List GetEnumerator

    static void Main() { List<int> list = new List<int>(); list.Add(); list.Add(); list.Add( ...

  6. ARM-Linux S5PV210 UART驱动(3)----串口核心层、关键结构体、接口关系

    尽管一个特定的UART设备驱动完全可以按照tty驱动的设计方法来设计,即定义tty_driver并实现tty_operations其中的成员函数,但是Linux已经在文件serial_core.c中实 ...

  7. R语言将数据框转成xts

    R语言初学者,不怎么会,今天碰到的问题,查了好久才找到,原来如此简单 尼玛,下次再忘记抽自己3巴掌

  8. [整理归档]30 common tasks you perform using the GUI that you can do faster in Windows PowerShell

    主要内容来自于 http://channel9.msdn.com/Events/TechEd/Australia/2014/DCI316 可以下载PPT以及视频,个人只是整理一下平时常用的 NetWo ...

  9. instanceof、==号、Objetc类

    1)instanceof: 判断某个对象是否为某个类的实例,注意多态的运用,一个父类引用指向子类的对象,根据继承,子类就是父类,所以子类也可以看做是父类的一个实例.  形式:引用 instanceof ...

  10. oracle 日志文件管理

    OS: [root@b28-122 ~]# more /etc/oracle-releaseOracle Linux Server release 5.7 DB: SQL> select * f ...