BZOJ2337: [HNOI2011]XOR和路径(高斯消元,期望)
解题思路:
Xor的期望???怕你不是在逗我。
按为期望,新技能get
剩下的就是游走了。
代码:
#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
struct pnt{
int hd;
int ind;
}p[];
struct ent{
int twd;
int lst;
int vls;
}e[];
double a[][];
int cnt;
int n,m;
void ade(int f,int t,int v)
{
cnt++;
e[cnt].vls=v;
e[cnt].twd=t;
e[cnt].lst=p[f].hd;
p[f].hd=cnt;
p[f].ind++;
return ;
}
void G_(void)
{
for(int i=;i<=n;i++)
{
int h=i;
for(int j=i+;j<=n;j++)if(fabs(a[h][i])<fabs(a[j][i]))h=j;
if(h!=i)for(int j=i;j<=n+;j++)std::swap(a[i][j],a[h][j]);
for(int j=i+;j<=n;j++)
{
double s=a[j][i]/a[i][i];
for(int k=i;k<=n+;k++)a[j][k]-=a[i][k]*s;
}
}
for(int i=n;i>;i--)
{
for(int j=i-;j>;j--)
{
a[j][n+]-=a[i][n+]/a[i][i]*a[j][i];
}
}
return ;
}
int main()
{
// freopen("a.in","r",stdin);
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
ade(a,b,c);if(a!=b)ade(b,a,c);
}
double ans=;
for(int i_=;(1ll<<i_)<=(long long)(1e9);i_++)
{
memset(a,,sizeof(a));
for(int i=;i<=n;i++)
{
a[i][i]=p[i].ind;if(i==n)continue;
for(int i__=p[i].hd;i__;i__=e[i__].lst)
{
int j=e[i__].twd;
if(e[i__].vls&(<<i_))a[i][j]+=1.00,a[i][n+]+=1.00;
else a[i][j]-=1.00;
}
}
G_();double ps=a[][n+]/a[][];
ans+=ps*(1ll<<i_);
}
printf("%.3lf\n",ans);
return ;
}
BZOJ2337: [HNOI2011]XOR和路径(高斯消元,期望)的更多相关文章
- BZOJ2337:[HNOI2011]XOR和路径(高斯消元)
Description 给定一个无向连通图,其节点编号为 1 到 N,其边的权值为非负整数.试求出一条从 1 号节点到 N 号节点的路径,使得该路径上经过的边的权值的“XOR 和”最大.该路径可以重复 ...
- BZOJ 2337: [HNOI2011]XOR和路径( 高斯消元 )
一位一位考虑异或结果, f(x)表示x->n异或值为1的概率, 列出式子然后高斯消元就行了 --------------------------------------------------- ...
- BZOJ 2337: [HNOI2011]XOR和路径 [高斯消元 概率DP]
2337: [HNOI2011]XOR和路径 题意:一个边权无向连通图,每次等概率走向相连的点,求1到n的边权期望异或和 这道题和之前做过的高斯消元解方程组DP的题目不一样的是要求期望异或和,期望之间 ...
- 【BZOJ2337】XOR和路径(高斯消元)
题目链接 大意 给出\(N\)个点,\(M\)条边的一张图,其中每条边都有一个非负整数边权. 一个人从1号点出发,在与该点相连的边中等概率的选择一条游走,直到走到\(N\)号点. 问:将这条路径上的边 ...
- BZOJ 2337 XOR和路径 | 高斯消元 期望 位运算
BZOJ 2337 XOR和路径 题解 这道题和游走那道题很像,但又不是完全相同. 因为异或,所以我们考虑拆位,分别考虑每一位: 设x[u]是从点u出发.到达点n时这一位异或和是1的概率. 对于所有这 ...
- bzoj2337 XOR和路径——高斯消元
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2337 异或就一位一位考虑: x为到n的概率,解方程组即可: 考虑了n就各种蜜汁错误,所以索性 ...
- HDU2262;Where is the canteen(高斯消元+期望)
传送门 题意 给出一张图,LL从一个点等概率走到上下左右位置,询问LL从宿舍走到餐厅的步数期望 分析 该题是一道高斯消元+期望的题目 难点在于构造矩阵,我们发现以下结论 设某点走到餐厅的期望为Ek 1 ...
- BZOJ2337: [HNOI2011]XOR和路径(期望 高斯消元)
题意 题目链接 Sol 期望的线性性对xor运算是不成立的,但是我们可以每位分开算 设\(f[i]\)表示从\(i\)到\(n\)边权为1的概率,统计答案的时候乘一下权值 转移方程为 \[f[i] = ...
- BZOJ2337 [HNOI2011]XOR和路径 【概率dp + 高斯消元】
题目 题解 突然get到这样路径期望的题目八成是高斯消元 因为路径上的dp往往具有后效性,这就形成了一个方程组 对于本题来说,直接对权值dp很难找到突破口 但是由于异或是位独立的,我们考虑求出每一位的 ...
随机推荐
- Qt之根据扩展名获取文件图标、类型
简述 在C++根据扩展名获取文件图标.类型一节中我们分享了如何根据扩展名来获取对应的文件图标.类型,下面.我们在Qt中使用它. 简述 示例 效果 源码 更多参考 示例 如下,我们根据扩展名来获取对应的 ...
- iOS gzip解压
1. 导入libz库(如:libz 1.2.5.dylib) 2. 引入头文件 #import "zlib.h" 3. 实现解压(输入输出都为NSData对象) -(NSData ...
- 【C#】报表制作<机房重构>
前言 和VB须要引用其它报表软件不同,VS自带报表设计的功能,初次尝试.就感受到了它的强大之处. 报表制作 话不多说.直接报表的制作过程. 1.首先,我们要先制作一个报表的容器.放到我们显示报表的窗口 ...
- 智课雅思短语---五、 in contrast / on the contrary
智课雅思短语---五. in contrast / on the contrary 一.总结 一句话总结:相反 in contrast / on the contrary. 1.replace/ su ...
- POJ 2478 线性递推欧拉函数
题意: 求sigma phi(n) 思路: 线性递推欧拉函数 (维护前缀和) //By SiriusRen #include <cstdio> using namespace std; # ...
- childNodes.length和form.length的不同
我们知道,DOM里面提供了element.childNodes.length属性,childNodes 属性返回节点的子节点集合,以 NodeList 对象. 那么childNodes包含哪些节点呢? ...
- bash编程,while嵌套case语句, file不能判断文件存在与否
写一个脚本, 完成如下要求 (1)脚本可接受参数 : start, stop, restart, status, (2)如果参数非非法, 提示使用格式后报错退出; (3)如果是start, 则创建/t ...
- nginx的Rewrite重写
location /{ if ($remote_addr=192.168.1.100){ //禁止此 ip 访问 ...
- JavaScript笔记(1)
JS前导: ECMA欧洲计算机制造者协会 ECMA-262 (ES5规范) ECMA-404(Json规范) wsc定义HTML.CSS.DOM规范 计算机程序分为: cpu密集(用于计算) I/O密 ...
- shell应用之批量添加用户实例
这里要实现功能介绍 读取一个用户列表文件 给列表中的用户添加随机密码需要包含大小写字符和数字 保存对应的用户和密码文件 这些用户属于同个用户组 1.列表文件 [root@mail ~]# cat li ...