bzoj2337 XOR和路径——高斯消元
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2337
异或就一位一位考虑;
x为到n的概率,解方程组即可;
考虑了n就各种蜜汁错误,所以索性不管n了,这样的题好像不管n比较方便。
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int const M=;
int n,m,d[],head[],ct;
double a[][],ans,x[];
struct N{
int to,next,w;
N(int t=,int n=,int w=):to(t),next(n),w(w) {}
}edge[M<<];
void add(int x,int y,int z)
{
edge[++ct]=N(y,head[x],z);head[x]=ct;
d[x]++;
}
void gauss()
{
for(int i=;i<n;i++)
{
int k=i;
for(int j=i+;j<n;j++)
if(fabs(a[j][i])>fabs(a[k][i]))k=j;
if(k!=i)
for(int j=i;j<=n+;j++)swap(a[k][j],a[i][j]);
for(int j=n+;j>=i;j--)a[i][j]/=a[i][i];
for(int j=i+;j<n;j++)
for(int l=n+;l>=i;l--)//倒序!!!
a[j][l]-=a[j][i]*a[i][l];
}
for(int i=n-;i;i--)
{
for(int j=i+;j<n;j++)//不是n+1
a[i][n+]-=a[i][j]*x[j];
x[i]=a[i][n+];
}
}
void work(int nw)
{
memset(a,,sizeof a);
memset(x,,sizeof x);
for(int i=;i<n;i++)
{
for(int j=head[i];j;j=edge[j].next)
{
int to=edge[j].to;
int w=edge[j].w;
if(w&nw)a[i][to]-=1.0/d[i],a[i][n+]-=1.0/d[i];
else a[i][to]+=1.0/d[i];
}
a[i][i]-=;
}
gauss();
ans+=x[]*nw;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=,x,y,z;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);
if(x!=y)add(y,x,z);
}
for(int i=;i<=;i++)
work(<<i);
printf("%.3lf",ans);
return ;
}
bzoj2337 XOR和路径——高斯消元的更多相关文章
- 【BZOJ2337】XOR和路径(高斯消元)
题目链接 大意 给出\(N\)个点,\(M\)条边的一张图,其中每条边都有一个非负整数边权. 一个人从1号点出发,在与该点相连的边中等概率的选择一条游走,直到走到\(N\)号点. 问:将这条路径上的边 ...
- BZOJ 2337: [HNOI2011]XOR和路径( 高斯消元 )
一位一位考虑异或结果, f(x)表示x->n异或值为1的概率, 列出式子然后高斯消元就行了 --------------------------------------------------- ...
- BZOJ 2337: [HNOI2011]XOR和路径 [高斯消元 概率DP]
2337: [HNOI2011]XOR和路径 题意:一个边权无向连通图,每次等概率走向相连的点,求1到n的边权期望异或和 这道题和之前做过的高斯消元解方程组DP的题目不一样的是要求期望异或和,期望之间 ...
- BZOJ 2337 XOR和路径 | 高斯消元 期望 位运算
BZOJ 2337 XOR和路径 题解 这道题和游走那道题很像,但又不是完全相同. 因为异或,所以我们考虑拆位,分别考虑每一位: 设x[u]是从点u出发.到达点n时这一位异或和是1的概率. 对于所有这 ...
- BZOJ2337:[HNOI2011]XOR和路径(高斯消元)
Description 给定一个无向连通图,其节点编号为 1 到 N,其边的权值为非负整数.试求出一条从 1 号节点到 N 号节点的路径,使得该路径上经过的边的权值的“XOR 和”最大.该路径可以重复 ...
- BZOJ2337: [HNOI2011]XOR和路径(高斯消元,期望)
解题思路: Xor的期望???怕你不是在逗我. 按为期望,新技能get 剩下的就是游走了. 代码: #include<cmath> #include<cstdio> #incl ...
- 【bzoj2115】[Wc2011] Xor DFS树+高斯消元求线性基
题目描述 输入 第一行包含两个整数N和 M, 表示该无向图中点的数目与边的数目. 接下来M 行描述 M 条边,每行三个整数Si,Ti ,Di,表示 Si 与Ti之间存在 一条权值为 Di的无向边. 图 ...
- HDU 3949 XOR ——线形基 高斯消元
[题目分析] 异或空间的K小值. 高斯消元和动态维护线形基两种方法都试了试. 动态维护更好些,也更快(QAQ,我要高斯消元有何用) 高斯消元可以用来开拓视野. 注意0和-1的情况 [代码] 高斯消元 ...
- HDU 3949 XOR [线性基|高斯消元]
目录 题目链接 题解 代码 题目链接 HDU 3949 XOR 题解 hdu3949XOR 搞死消元找到一组线性无关组 消出对角矩阵后 对于k二进制拆分 对于每列只有有一个1的,显然可以用k的二进制数 ...
随机推荐
- linux svn配置hooks
先创建仓库: svnadmin create /data/svn/my.com 再配置权限: #cd /data/svn/my.com/conf/ #vim svnserve.conf 配置 [gen ...
- [转]java类 对象 和构造方法
github地址:https://github.com/lily1010/java_learn/tree/master/dog java中对象和类 java中万物皆对象,比如说动物,里面有猫,狗,鱼等 ...
- 微信小程序 - 音频播放(1.2版本和1.2版本之后)
不多说了,直接贴code // 1.2版本以后便不在维护 wx.getBackgroundAudioManager({ success:function(res){ var status =res.s ...
- bootstrap之ScrollTo
ScrollTo package io.appium.android.bootstrap.handler; import com.android.uiautomator.core.UiObject; ...
- 亲测linux上安装svn
方法一: 1.wget http://subversion.tigris.org/downloads/subversion-1.6.1.tar.gz2.wget http://subversion.t ...
- [Pyhton]weakref 弱引用
文档中的解释: https://docs.python.org/2/library/weakref.html wiki 中的解释: 在计算机程序设计中,弱引用.与强引用相对.是指不能确保其引用的对象不 ...
- gcc编译minigui新程序报错
!ggcc *.c -ljpeg -lpng -lminigui -lpthread/usr/local/lib/libminigui.so: undefined reference to `dl ...
- Arcgis Engine(ae)接口详解(1):featureClass
//IFeatureClass 来源请自行解决 IFeatureClass featureClass = null; //获取featureClass的各种名称 //PS:featureClass可以 ...
- 写入文本文件时“\n”不是回车换行而是个方块“■”的解决方法
用“\n”写入文本文件时,打开文本文件显示的为什么不是回车换行而是个黑方块“■”,但用file()读取时还是认为是一行一行的? 首先在WINDOWS里回车换行是"\r\n"; 而L ...
- reviews of learn python3 the hard way
Almost every time,I try my best to write a long review of the book I have read. But this time I want ...