1778: [Usaco2010 Hol]Dotp 驱逐猪猡

题意:一个炸弹从1出发p/q的概率爆炸,否则等概率走向相邻的点。求在每个点爆炸的概率


高斯消元求不爆炸到达每个点的概率,然后在一个点爆炸就是\(\frac{f[i]}{sum}\)

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <algorithm>
  4. #include <cstring>
  5. #include <cmath>
  6. using namespace std;
  7. typedef unsigned long long ll;
  8. const int N=305, M=1e5;
  9. const double eps=1e-15;
  10. inline int read() {
  11. char c=getchar(); int x=0, f=1;
  12. while(c<'0' || c>'9') {if(c=='-')f=-1; c=getchar();}
  13. while(c>='0' && c<='9') {x=x*10+c-'0'; c=getchar();}
  14. return x*f;
  15. }
  16. int n, m, u, v, de[N]; double p, q;
  17. struct edge{int v, ne;}e[M];
  18. int cnt=1, h[N];
  19. inline void ins(int u, int v) {
  20. e[++cnt]=(edge){v, h[u]}; h[u]=cnt;
  21. e[++cnt]=(edge){u, h[v]}; h[v]=cnt;
  22. }
  23. double a[N][N];
  24. void build() {
  25. a[1][1]=1; a[1][n+1]=1;
  26. for(int u=1; u<=n; u++) {
  27. a[u][u] = 1;
  28. for(int i=h[u];i;i=e[i].ne) {
  29. int v=e[i].v;
  30. a[u][v] += -(1-p/q)/de[v];
  31. }
  32. }
  33. //for(int i=1; i<=n; i++) for(int j=1; j<=n+1; j++) printf("%lf%c",a[i][j], j==n+1?'\n':' ');
  34. }
  35. void gauss() {
  36. for(int i=1; i<=n; i++) {
  37. int r=i;
  38. for(int j=i; j<=n; j++) if(abs(a[j][i])>abs(a[r][i])) r=j;
  39. if(r!=i) for(int j=1; j<=n+1; j++) swap(a[r][j], a[i][j]);
  40. for(int k=i+1; k<=n; k++) if(abs(a[k][i])>eps) {
  41. double t = a[k][i]/a[i][i];
  42. for(int j=i; j<=n+1; j++) a[k][j] -= t*a[i][j];
  43. }
  44. }
  45. for(int i=n; i>=1; i--) {
  46. for(int j=n; j>i; j--) a[i][n+1] -= a[i][j]*a[j][n+1];
  47. a[i][n+1] /= a[i][i];
  48. }
  49. }
  50. int main() {
  51. freopen("in","r",stdin);
  52. n=read(); m=read(); p=read(); q=read();
  53. for(int i=1; i<=m; i++) u=read(), v=read(), ins(u, v), de[u]++, de[v]++;
  54. build();
  55. gauss();
  56. double sum=0;
  57. for(int i=1; i<=n; i++) sum += a[i][n+1];// printf("hi %d %lf\n", i, a[i][n+1]);
  58. for(int i=1; i<=n; i++) printf("%.9lf\n", a[i][n+1]/sum+eps);
  59. }

BZOJ 1778: [Usaco2010 Hol]Dotp 驱逐猪猡 [高斯消元 概率DP]的更多相关文章

  1. BZOJ 1778: [Usaco2010 Hol]Dotp 驱逐猪猡(高斯消元+期望dp)

    传送门 解题思路 设\(f(x)\)表示到\(x\)这个点的期望次数,那么转移方程为\(f(x)=\sum\frac{f(u)*(1 - \frac{p}{q})}{deg(u)}\),其中\(u\) ...

  2. BZOJ 1778: [Usaco2010 Hol]Dotp 驱逐猪猡 (高斯消元)

    题面 题目传送门 分析 令爆炸概率为PPP.设 f(i)=∑k=0∞pk(i)\large f(i)=\sum_{k=0}^{\infty}p_k(i)f(i)=∑k=0∞​pk​(i),pk(i)p ...

  3. BZOJ 1778: [Usaco2010 Hol]Dotp 驱逐猪猡

    1778: [Usaco2010 Hol]Dotp 驱逐猪猡 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 563  Solved: 216[Submi ...

  4. BZOJ 1778 [Usaco2010 Hol]Dotp 驱逐猪猡 ——期望DP

    思路和BZOJ 博物馆很像. 同样是高斯消元 #include <map> #include <ctime> #include <cmath> #include & ...

  5. bzoj 1778: [Usaco2010 Hol]Dotp 驱逐猪猡【dp+高斯消元】

    算是比较经典的高斯消元应用了 设f[i]为i点答案,那么dp转移为f[u]=Σf[v]*(1-p/q)/d[v],意思是在u点爆炸可以从与u相连的v点转移过来 然后因为所有f都是未知数,高斯消元即可( ...

  6. bzoj 1778 [Usaco2010 Hol]Dotp 驱逐猪猡(高斯消元)

    [题意] 炸弹从1开始运动,每次有P/Q的概率爆炸,否则等概率沿边移动,问在每个城市爆炸的概率. [思路] 设M表示移动一次后i->j的概率.Mk为移动k次后的概率,则有: Mk=M^k 设S= ...

  7. BZOJ 1778: [Usaco2010 Hol]Dotp 驱逐猪猡 概率与期望+高斯消元

    这个还挺友好的,自己相对轻松能想出来~令 $f[i]$ 表示起点到点 $i$ 的期望次数,则 $ans[i]=f[i]\times \frac{p}{q}$ #include <cmath> ...

  8. 【BZOJ】1778: [Usaco2010 Hol]Dotp 驱逐猪猡

    [题意]给定无向图,炸弹开始在1,在每个点爆炸概率Q=p/q,不爆炸则等概率往邻点走,求在每个点爆炸的概率.n<=300. [算法]概率+高斯消元 [题解]很直接的会考虑假设每个点爆炸的概率,无 ...

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

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

随机推荐

  1. Palindromes

    http://acm.hdu.edu.cn/showproblem.php?pid=1318 Palindromes Time Limit: 2000/1000 MS (Java/Others)    ...

  2. Npm vs Yarn 之备忘大全

    有则笑话,如此讲到:"老丈人爱吃核桃,昨天买了二斤陪妻子送去,老丈人年轻时练过武,用手一拍核桃就碎了,笑着对我说:你还用锤子,你看我用手就成.我嘴一抽,来了句:人和动物最大的区别就是人会使用 ...

  3. oracle和mysql分页

    mysql分页 关键字limit,limit m,n 其中m表示起始位置的下标,下标从0开始.n表示要显示的条数,比如要查询一个表的第2到5条数据. ,; oracle分页 关键字rownum, ro ...

  4. 转:C++与JAVA语言区别

    转自:http://club.topsage.com/thread-265349-1-1.html Java并不仅仅是C++语言的一个变种,它们在某些本质问题上有根本的不同: (1)Java比C++程 ...

  5. HDU 1979 Red and Black

    题目: There is a rectangular room, covered with square tiles. Each tile is colored either red or black ...

  6. 国寿e店/人寿云参会云助理,不去公司就能刷脸考勤打卡?

    自从2017年3月平安保险公司实行E行销打卡考勤以来,保险增员迅猛增加,保险业绩也随之水涨船高.年底开始中国人寿保险也陆续开始实行app考勤,有些需要连接公司指定WiFi,或在指定地点方可打卡考勤.不 ...

  7. jsp里的逻辑语句c:if和c:choose

    1.c:if <c:if test=""></c:if> c:when的test里可以是变量或者是一个EL表达式,其结果应该是true或者false. EL ...

  8. xml格式字符串转为Map

    import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom ...

  9. 2.CLI标准

    CLI  简称(CLI标准) 通用语言架构    维基百科地址: http://zh.wikipedia.org/wiki/通用语言架构 是一个开放的  技术规范  .它是由  微软  联合  惠普  ...

  10. js禁止开发者工具

    $(document).keydown(function() { return key(arguments[0]) }); function key(e) { //f12 var keynum; if ...