BZOJ 2337 XOR和路径(概率DP)
求点1到点n经过的路径权值异或和的期望。
考虑按位计算,对于每一位来说,令dp[i]表示从i到n的异或和期望值。
那么dp[i]=sum(dp[j]+1-dp[k]).如果w(i,j)这一位为0,如果w(i,k)这一位为1.边界为dp[n][n]=0.
那么求解每个方程组就得到了每一位的贡献。另外注意自环的出理就ok了。
# include <cstdio> # include <cstring> # include <cstdlib> # include <iostream> # include <vector> # include <queue> # include <stack> # include <map> # include <set> # include <cmath> # include <algorithm> using namespace std; # define lowbit(x) ((x)&(-x)) # define pi acos(-1.0) # define eps 1e-9 # define MOD 1000000000 # define INF 1000000000 # define mem(a,b) memset(a,b,sizeof(a)) # define FOR(i,a,n) for(int i=a; i<=n; ++i) # define FO(i,a,n) for(int i=a; i<n; ++i) # define bug puts("H"); # define lch p<<1,l,mid # define rch p<<1|1,mid+1,r # define mp make_pair # define pb push_back typedef pair<int,int> PII; typedef vector<int> VI; # pragma comment(linker, "/STACK:1024000000,1024000000") typedef long long LL; int Scan() {int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f; } void Out(int a) {if(a<0) {putchar('-'); a=-a;}if(a>=10) Out(a/10);putchar(a%10+'0'); } const int N=105; //Code begin...struct Edge{int p, next, w;}edge[20005]; int head[N], cnt=1, dee[N]; double a[N][N], x[N]; int equ, var;void add_edge(int u, int v, int w){edge[cnt].p=v; edge[cnt].next=head[u]; edge[cnt].w=w; head[u]=cnt++; } int Guass(){int i, j, k, col, max_r;for (k=0, col=0; k<equ&&col<var; ++k, ++col){max_r=k;FO(i,k+1,equ) if (fabs(a[i][col])>fabs(a[max_r][col])) max_r=i;if (fabs(a[max_r][col])<eps) return 0;if (k!=max_r) {FO(j,col,var) swap(a[k][j],a[max_r][j]); swap(x[k],x[max_r]);}x[k]/=a[k][col];FO(j,col+1,var) a[k][j]/=a[k][col];a[k][col]=1;FO(i,0,equ) if (i!=k) {x[i]-=x[k]*a[i][col];FO(j,col+1,var) a[i][j]-=a[k][j]*a[i][col];a[i][col]=0;}}return 1; } int main () {int n, m, u, v, w;double ans=0;scanf("%d%d",&n,&m);equ=var=n;while (m--) {scanf("%d%d%d",&u,&v,&w);--u; --v;if (u!=v) add_edge(u,v,w), add_edge(v,u,w), ++dee[v];else add_edge(u,v,w);++dee[u];}FO(i,0,32) {mem(a,0); mem(x,0);FO(j,0,n-1) {a[j][j]=dee[j];for (int k=head[j]; k; k=edge[k].next) {v=edge[k].p; w=edge[k].w;if (w&(1<<i)) {a[j][v]+=1; x[j]+=1;}else a[j][v]-=1;}}a[n-1][n-1]=1;Guass();ans+=(x[0]*(1<<i));}printf("%.3f\n",ans);return 0; }
View Code
转载于:https://www.cnblogs.com/lishiyao/p/6744388.html
BZOJ 2337 XOR和路径(概率DP)相关推荐
- 【BZOJ - 4318】OSU!(概率dp,数学期望,期望的线性性)
题干: osu 是一款群众喜闻乐见的休闲软件. 我们可以把osu的规则简化与改编成以下的样子: 一共有n次操作,每次操作只有成功与失败之分,成功对应1,失败对应0,n次操作对应为1个长度为n的01串. ...
- bzoj 4820: [Sdoi2017]硬币游戏 概率dp+高斯消元+KMP
题意 周末同学们非常无聊,有人提议,咱们扔硬币玩吧,谁扔的硬币正面次数多谁胜利. 大家纷纷觉得这个游戏非常符合同学们的特色,但只是扔硬币实在是太单调了. 同学们觉得要加强趣味性,所以要找一个同学扔很多 ...
- bzoj 3450: Tyvj1952 Easy(概率DP)
3450: Tyvj1952 Easy Time Limit: 10 Sec Memory Limit: 128 MB Submit: 828 Solved: 613 [Submit][Statu ...
- BZOJ 2337: [HNOI2011]XOR和路径( 高斯消元 )
一位一位考虑异或结果, f(x)表示x->n异或值为1的概率, 列出式子然后高斯消元就行了 --------------------------------------------------- ...
- 【BZOJ - 3036】绿豆蛙的归宿(概率DAG图dp,拓扑排序,概率dp,期望的线性性)
题干: 随着新版百度空间的下线,Blog宠物绿豆蛙完成了它的使命,去寻找它新的归宿. 给出一个有向无环的连通图,起点为1终点为N,每条边都有一个长度.绿豆蛙从起点出发,走向终点. 到达每一个顶点时,如 ...
- BZOJ 3270: 博物馆 1778: 驱逐猪猡 【概率DP+高斯消元】
题目描述: 中文题面,不多解释.1778传送门 3270 传送门 (博物馆)题目分析: 也许很多人做概率题的时候都有种虚幻感..感觉莫名其妙就得出一个期望.概率,一知半解... 所以我在这里仔细地剖析 ...
- 线性代数五之高斯消元——[SDOI2010]外星千足虫,[HNOI2013]游走,[HNOI2011]XOR和路径,[hdu 4035]Maze
多类型高斯消元杂题 [SDOI2010]外星千足虫 description solution code [HNOI2013]游走 description solution code [HNOI2011 ...
- 【CodeForces - 518D】Ilya and Escalator(概率dp,数学期望)
题干: Ilya got tired of sports programming, left university and got a job in the subway. He was given ...
- 插头DP 概率DP / 期望DP
插头DP && 概率DP / 期望DP 写在前面: 插头DP P5056 [模板]插头dp 手写哈希表的方法: 拉链法的代码如下: 开放寻址法的代码如下: 接下来是这道题的代码实现: ...
最新文章
- Android实时取景:用SurfaceView实现
- 零基础实践深度学习之数学基础
- (provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何进程。) (Microsoft SQL Server,错误: 233)...
- 技术人写作和写代码一样重要
- appcrash事件怎么解决_突发事件中身心容易紧张焦虑,该如何控制心理压力与情绪?...
- ctfshow-WEB-web10( with rollup注入绕过)
- dategurd oracle_Oracle Dataguard 基本原理
- lammps教程:薄膜渗透过滤模拟--平衡弛豫过程
- c语言图像的简单叠加,第10章C语言图形编程.ppt
- iMindMap2020 中文旗舰免费版
- ubuntu修改dns服务器,配置Ubuntu DNS服务器
- 华为一直响应服务器异常,服务器不断异常重启
- Android 设备在Play Store无法搜索下载Netflix软件
- 39岁阿里P9提前退休,资产1.5亿,北京4套房!职场人的离职悲喜各不相同
- 读书笔记期货市场技术分析
- 《Thinking in Bets》读书分享 - 如何在信息不完全情况下做出更好的决策(1)
- 佐治亚大学计算机工程本科课程,美国大学本科专业排名:计算机工程.docx
- Jmeter入门(一)使用Jmeter进行简单的性能测试
- 企业官网小程序搭建教程
- 判定覆盖 与 条件覆盖 的区别
热门文章
- 插入的数据不能时时查询到_漫谈 LevelDB 数据结构(一):跳表(Skip List)
- c++ floor 赋值_C++之floor函数
- 勤哲excel 2007服务器 模板分类为空,勤哲Excel服务器20088.7完整企业版
- 处理增删改_实现数据的增删改查
- java jigsaw demo_Java9模块化(Jigsaw)初识
- c ++基本数据类型_C ++中的数据类型
- webmin安装_如何在Ubuntu 18.04上安装Webmin
- iOS UITextView和UITextViewDelegate
- Java中的AtomicInteger
- python矩阵_Python矩阵