2337: [HNOI2011]XOR和路径

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 1170  Solved: 683

Description

Input

Output

Sample Input

Sample Output

HINT

Source

【分析】

  这题终于自己打出来了高斯消元。没有对比代码了。。。

  很心酸啊。。调试的时候是完全没有方向的,高斯消元还要自己一步步列式子然后消元解。。【为什么错都不知道有时候

  这题显然是不能直接记录异或和然后DP的。

  显然是要拆位的。

  拆位之后f[i][0]表示从i走,走到终点,这一位异或和为0的概率。

  f[i][0]=f[j][0]*p (i->j 这一位边权为0)+f[j][1]*p (i->j 这一位边权为1)

  反之不写了

  f[n][0]=1 f[n][1]=0

  就是(2*n)^2规模的高斯消元。

  然后用f[1][1]乘这一位的贡献加进答案里面就好。

  一开始被卡精,eps太小,后来数组爆一位!!醉了!!

  1. #include<cstdio>
  2. #include<cstdlib>
  3. #include<cstring>
  4. #include<iostream>
  5. #include<algorithm>
  6. #include<cmath>
  7. using namespace std;
  8. #define Maxn 110
  9. #define Maxm 10010
  10. const double eps=1e-;
  11.  
  12. struct node
  13. {
  14. int x,y,c,next;
  15. }t[Maxm*];
  16. int first[Maxn],len;
  17. double d[Maxn];
  18. void ins(int x,int y,int c)
  19. {
  20. d[x]+=1.0;
  21. t[++len].x=x;t[len].y=y;t[len].c=c;
  22. t[len].next=first[x];first[x]=len;
  23. }
  24.  
  25. bool dcmp(double x) {return fabs(x)>eps;}
  26.  
  27. double a[*Maxn][*Maxn],f[*Maxn];
  28. void gauss(int n)
  29. {
  30. for(int i=;i<n;i++)
  31. {
  32. // if(a[i][i]==0) continue;
  33. int t=i;
  34. for(int j=i+;j<=n;j++) if(fabs(a[j][i])>fabs(a[t][i])) t=j;
  35. if(t!=i)
  36. {
  37. for(int j=;j<=n;j++) swap(a[i][j],a[t][j]);
  38. }
  39. for(int j=i+;j<=n;j++)
  40. {
  41. double t=a[j][i]/a[i][i];
  42. if(dcmp(a[j][i]))
  43. {
  44. for(int k=;k<=n;k++) a[j][k]-=a[i][k]*t;
  45. }
  46. }
  47. }
  48. for(int i=n-;i>=;i--)
  49. {
  50. for(int j=i+;j<n;j++) a[i][n]+=f[j]*a[i][j];
  51. f[i]=-a[i][n]/a[i][i];
  52. }
  53. }
  54.  
  55. int main()
  56. {
  57. int n,m,mx=;
  58. scanf("%d%d",&n,&m);
  59. len=;memset(first,,sizeof(first));
  60. for(int i=;i<=n;i++) d[i]=;
  61. for(int i=;i<=m;i++)
  62. {
  63. int x,y,c;
  64. scanf("%d%d%d",&x,&y,&c);
  65. mx=max(mx,c);
  66. ins(x,y,c);
  67. if(x!=y) ins(y,x,c);
  68. }
  69. int l=;while((<<l)<=mx) l++;
  70. double ans=;
  71. for(int i=;i<=l;i++)
  72. {
  73. for(int j=;j<=n+n;j++) for(int k=;k<=n+n;k++) a[j][k]=;
  74. for(int j=;j<n;j++)
  75. {
  76. a[j][j]=1.0;a[j+n][j+n]=1.0;
  77. for(int k=first[j];k;k=t[k].next)
  78. {
  79. int y=t[k].y;
  80. if(t[k].c&(<<i)) a[j][y+n]-=1.0/d[j],a[j+n][y]-=1.0/d[j];
  81. else a[j][y]-=1.0/d[j],a[j+n][y+n]-=1.0/d[j];
  82. }
  83. a[j][(n<<)+]=a[j+n][(n<<)+]=;
  84. }
  85. a[n][n]=1.0;a[n+n][n+n]=1.0;
  86. a[n][(n<<)+]=-1.0;a[n<<][(n<<)+]=;
  87. gauss((n<<)+);
  88. // printf("%.10lf\n",f[n+1]);
  89. ans+=1.0*(<<i)*f[n+];
  90. }
  91. printf("%.3lf\n",ans);
  92. return ;
  93. }

【怎么说回家前A掉这题还是很兴奋的

【也说明我能自己打出概率的高斯消元了耶!

2017-04-22 16:06:09

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

  1. [HNOI2011]XOR和路径 概率期望 高斯消元

    题面 题解:因为异或不太好处理,,,因此按位来算,这样最后的答案就是每一位上的值乘对应的权值再求和.本着期望要倒退的原则,,,我们设$f[i]$表示从$i$到$n$,xor和为1的概率.那么观察$xo ...

  2. 【BZOJ2337】[HNOI2011]XOR和路径 期望DP+高斯消元

    [BZOJ2337][HNOI2011]XOR和路径 Description 题解:异或的期望不好搞?我们考虑按位拆分一下. 我们设f[i]表示到达i后,还要走过的路径在当前位上的异或值得期望是多少( ...

  3. BZOJ 3270 博物馆 && CodeForces 113D. Museum 期望概率dp 高斯消元

    大前提,把两个点的组合看成一种状态 x 两种思路 O(n^7) f[x]表示在某一个点的前提下,这个状态经过那个点的概率,用相邻的点转移状态,高斯一波就好了 O(n^6) 想象成臭气弹,这个和那个的区 ...

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

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

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

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

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

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

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

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

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

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

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

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

  10. 【概率DP/高斯消元】BZOJ 2337:[HNOI2011]XOR和路径

    2337: [HNOI2011]XOR和路径 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 682  Solved: 384[Submit][Stat ...

随机推荐

  1. nginx安装Lets Encrypt SSL免费HTTPS加密证书

    Linux Nginx网站:Certbot安装配置Lets Encrypt SSL免费HTTPS加密证书 原文地址:https://renwole.com/archives/157 实验环境:Cent ...

  2. 关于禁用"请停用以开发者模式运行的扩展程序"提示

    有兴趣研究谷歌浏览器扩展开发,但每次开启高版本chrome都会有烦人的提示 因为我用的360急速,目前还有提示,但使用原生chrome连插件都给删了,无语

  3. scrapy 爬虫踩过的坑(II)

    同事写了个爬虫,逻辑上看着没什么问题,但是一直报错:Request url must be str or unicode…… 打印了一下url 和url 的类型,确实是 unicode 懵逼…… 打印 ...

  4. 采用dlopen、dlsym、dlclose加载动态链接库【总结】【转】

    转自:https://www.cnblogs.com/Anker/p/3746802.html 1.前言 为了使程序方便扩展,具备通用性,可以采用插件形式.采用异步事件驱动模型,保证主程序逻辑不变,将 ...

  5. 大数据系列之分布式大数据查询引擎Presto

    关于presto部署及详细介绍请参考官方链接 http://prestodb-china.com PRESTO是什么? Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持G ...

  6. mysql命令gruop by报错this is incompatible with sql_mode=only_full_group_by

    在mysql 工具 搜索或者插入数据时报下面错误: ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause ...

  7. ASP.NET Web Api OwinSelfHost Restful 使用

    一.前言 总结一下什么是RESTful架构: (1)每一个URI代表一种资源: (2)客户端和服务器之间,传递这种资源的某种表现层: (3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现&q ...

  8. python去除html空格

    如下面的 <td> 柳暗花溟</td> html里面的空格&nbsp,想直接用strip()函数去除是不可能的,必须显式的去掉\xa0 例如以上的就可以这样的方式去除空 ...

  9. Python 正则表达式提高

    re模块的高级用法 search re.search(pattern, string[, flags]) ​ 若string中包含pattern子串,则返回Match对象,否则返回None,注意,如果 ...

  10. 你竟然在公钥中下毒!——如何在RSA公钥中添加后门

    原文:http://www.hackdig.com/?01/hack-17893.htm 分享到: 当我知道它是如何运行时,我惊得下巴都掉了.这是一个非常简单的手法,但这篇文章会颠覆你之前对RSA的看 ...