BZOJ2337:[HNOI2011]XOR和路径——题解
+++++++++++++++++++++++++++++++++++++++++++
+本文作者:luyouqi233。 +
+欢迎访问我的博客:http://www.cnblogs.com/luyouqi233/+
+++++++++++++++++++++++++++++++++++++++++++
——————————————————————————————————————————
http://www.lydsy.com/JudgeOnline/problem.php?id=2337
2 3 6
不会期望怎么办?看题解……
参考:http://blog.csdn.net/PoPoQQQ/article/details/42223843
我们考虑将xor的操作分解成对每一位的操作,然后将边权拆成当前位,模拟xor操作即可。
剩下来的操作就和我的上一篇博客(BZOJ3143)基本上相同了。
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
typedef double dl;
const int N=;
const int M=;
struct node{
int to,nxt,w;
}e[M*];
int head[N],cnt,d[N];
inline void add(int u,int v,int w){
cnt++;
e[cnt].to=v;
e[cnt].w=w;
e[cnt].nxt=head[u];
head[u]=cnt;
d[u]++;
return;
}
dl c[N][N],f[N][N],x[N],ans;
inline void Gauss(int n,int m){
for(int i=;i<=n;i++){
int l=i;
for(int j=l+;j<=n;j++)
if(fabs(f[l][i])<fabs(f[j][i]))l=j;
if(l!=i)
for(int j=i;j<=m;j++)
swap(f[l][j],f[i][j]);
for(int j=i+;j<=n;j++){
dl temp=f[j][i]/f[i][i];
for(int k=i;k<=m;k++)
f[j][k]=f[j][k]-f[i][k]*temp;
}
}
for(int i=n;i>=;i--){
dl t=f[i][m];
for(int j=n;j>i;j--)
t-=x[j]*f[i][j];
x[i]=t/f[i][i];
}
return ;
}
int main(){
int n,m;
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++){
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
add(u,v,w);
if(u!=v)add(v,u,w);
}
for(int i=;i<=;i++){
memset(f,,sizeof(f));
memset(x,,sizeof(x));
for(int u=;u<n;u++){
for(int k=head[u];k;k=e[k].nxt){
int v=e[k].to,w=e[k].w;
if(w&(<<i))f[u][v]+=,f[u][n+]+=;
else f[u][v]-=;
}
f[u][u]+=d[u];
}
for(int j=;j<=n+;j++)f[n][j]=;
f[n][n]=;
Gauss(n,n+);
ans+=x[]*(<<i);
}
printf("%.3f\n",ans);
return ;
}
BZOJ2337:[HNOI2011]XOR和路径——题解的更多相关文章
- BZOJ2337: [HNOI2011]XOR和路径
题解: 异或操作是每一位独立的,所以我们可以考虑每一位分开做. 假设当前正在处理第k位 那令f[i]表示从i到n 为1的概率.因为不是有向无环图(绿豆蛙的归宿),所以我们要用到高斯消元. 若有边i-& ...
- BZOJ2337:[HNOI2011]XOR和路径(高斯消元)
Description 给定一个无向连通图,其节点编号为 1 到 N,其边的权值为非负整数.试求出一条从 1 号节点到 N 号节点的路径,使得该路径上经过的边的权值的“XOR 和”最大.该路径可以重复 ...
- [BZOJ2337][HNOI2011]XOR和路径(概率+高斯消元)
直接不容易算,考虑拆成位处理. 设f[i]表示i到n的期望路径异或和(仅考虑某一位),则$f[y]=\sum\limits_{exist\ x1\to y=0}\frac{f[x1]}{d[x1]}+ ...
- BZOJ2337 [HNOI2011]XOR和路径 【概率dp + 高斯消元】
题目 题解 突然get到这样路径期望的题目八成是高斯消元 因为路径上的dp往往具有后效性,这就形成了一个方程组 对于本题来说,直接对权值dp很难找到突破口 但是由于异或是位独立的,我们考虑求出每一位的 ...
- BZOJ2337: [HNOI2011]XOR和路径(期望 高斯消元)
题意 题目链接 Sol 期望的线性性对xor运算是不成立的,但是我们可以每位分开算 设\(f[i]\)表示从\(i\)到\(n\)边权为1的概率,统计答案的时候乘一下权值 转移方程为 \[f[i] = ...
- BZOJ2337: [HNOI2011]XOR和路径(高斯消元,期望)
解题思路: Xor的期望???怕你不是在逗我. 按为期望,新技能get 剩下的就是游走了. 代码: #include<cmath> #include<cstdio> #incl ...
- bzoj千题计划191:bzoj2337: [HNOI2011]XOR和路径
http://www.lydsy.com/JudgeOnline/problem.php?id=2337 概率不能异或 但根据期望的线性,可以计算出每一位为1的概率,再累积他们的期望 枚举每一位i,现 ...
- BZOJ2337: [HNOI2011]XOR和路径 期望概率dp 高斯
这个题让我认识到我以往对于图上期望概率的认识是不完整的,我之前只知道正着退还硬生生的AC做过的所有图,那么现在让我来说一下逆退,一般来说对于概率性的东西都只是正推,因为有了他爸爸才有了他,而对于期望性 ...
- [HNOI2011]XOR和路径 题解
设 \(f(x)\) 表示从 \(x\) 节点走到 \(n\) 的期望.有 $$f(x)=\sum_{{x,y}}\frac{f(y)\oplus w(x,y)}{{\rm deg}(x)}$$ 由于 ...
随机推荐
- 怎样安装Appium
在浏览器地址栏输入 http://appium.io/ 打开Appium官网: 安装包下载完成后, 一路默认安装, 什么都不用点击, 等待大约10分钟: 安装完成后, 会在桌面生成快捷图标: 启动: ...
- bash脚本练习
练习一: 1.添加5个用户,user1,...,user5: 2.每个用户的密码同用户名,添加密码完成后,不显示命令的执行结果: 3.每个用户添加完成后,都要显示用户某某已添加成功. useradd ...
- 关于自学C语言开始时应该注意的问题分享—未完待续......
---恢复内容开始--- 自学C语言编程总结 第1章C语言概述 1. 如果用户将主函数的返回值类型定义为了void,则不需要返回任何值: 2. C语言的基本结构包括主函数和程序体两部分 ...
- PNG和PVR之间互相转换的脚本
项目经常会将png和pvr之间互相转换,这里mark一个脚本,会将当前目录下的文件全部批量转换 png转换成pvr @echo off path %path%;"C:\Program Fil ...
- Python3 迭代器,生成器,装饰器
1.迭代器 迭代器有两个基本方法,iter()和next(),next()完成后会引发StopIteration异常 a='abcdef' b=iter(a) #创建迭代器对象 print(type( ...
- CentOS基础命令
为网卡配置静态IP地址建议通过交互式界面nmtui进行配置 firewalld和iptablesCentOS7使用firewald取代原来的iptables,但实际上底层还是iptables,在上层加 ...
- monaco editor 实现自定义提示(sql为例)
monaco editor :https://www.cnblogs.com/XHappyness/p/9414177.html 这里实现自己定义的提示: .vue <template> ...
- 使用图片方式显示email地址
import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics2D ...
- jdbc关闭连接顺序
jdbc连接数据库时,先获取connection,再通过statement进行操作,将结果集放在resultset中,不过在关闭数据库的时候要小心,要跟前面的操作反着来,不然就会出现异常.如果直接关闭 ...
- MVC绕过登陆界面验证时HttpContext.Current.User.Identity.Name取值为空问题解决方法
Global.asax界面添加如下方法: void FormsAuthentication_Authenticate(object sender, FormsAuthenticationEventAr ...
