zoukankan      html  css  js  c++  java
  • P2973 [USACO10HOL]赶小猪

    跟那个某省省选题(具体忘了)游走差不多...

    把边搞到点上然后按套路Gauss即可

    貌似有人说卡精度,$eps≤1e-13$,然而我$1e-12$也可以过...

    代码:

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cmath> 
     4 #include<cstring>
     5 #define writeln(x)  write(x),puts("")
     6 #define writep(x)   write(x),putchar(' ')
     7 using namespace std;
     8 inline int read(){
     9     int ans=0,f=1;char chr=getchar();
    10     while(!isdigit(chr)){if(chr=='-') f=-1;chr=getchar();}
    11     while(isdigit(chr)){ans=(ans<<3)+(ans<<1)+chr-48;chr=getchar();}
    12     return ans*f;
    13 }void write(int x){
    14     if(x<0) putchar('-'),x=-x;
    15     if(x>9) write(x/10);
    16     putchar(x%10+'0');
    17 }const int M = 305;
    18 int n,m,p,q,du[M],e[M][M];
    19 double a[M][M],ans[M],b[M];
    20 const double eps=1e-13;
    21 inline void Gauss(){
    22     for(int i=1;i<=n;i++){
    23         int maxn=i;
    24         for(int j=i+1;j<=n;j++) if(fabs(a[j][i]-a[maxn][i])<eps) maxn=j;
    25         for(int j=1;j<=n+1;j++) swap(a[maxn][j],a[i][j]);
    26         for(int j=n+1;j>=i;j--)
    27             for(int k=i+1;k<=n;k++)
    28                 a[k][j]-=a[k][i]/a[i][i]*a[i][j];
    29     } 
    30     for(int i=n;i>=1;i--){ 
    31         for(int j=i+1;j<=n;j++)
    32             a[i][n+1]-=a[j][n+1]*a[i][j];
    33         a[i][n+1]/=a[i][i];
    34     }
    35     for(int i=1;i<=n;i++)    ans[i]=a[i][n+1];
    36 }
    37 int main(){
    38     n=read(),m=read(),p=read(),q=read();
    39     const double ps=p*1.0/q;
    40     for(int i=1;i<=m;i++){
    41         int x=read(),y=read();
    42         e[x][y]=e[y][x]=1;
    43         du[x]++,du[y]++;
    44     }
    45     for(int i=1;i<=n;i++){
    46         a[i][i]=1.0;
    47         for(int j=1;j<=n;j++)
    48             if(e[i][j])
    49                 a[i][j]-=(1.0-ps)/du[j];
    50     }
    51     a[1][n+1]=1.0;
    52     Gauss();
    53     for(int i=1;i<=n;i++)printf("%.9lf
    ",ans[i]*ps);
    54     return 0;
    55 }
  • 相关阅读:
    MySQL时间字段如何自动获取插入时间
    web.xml启动顺序
    如何开启Redis
    Windows下启动Redis命令
    Tomcat无法启动:Server Tomcat v8.5 Server at localhost failed to start
    浏览器报:Uncaught SyntaxError: Unexpected end of input 解决办法
    链表查询,双表及多表
    Spring Boot项目中开启事务支持及使用
    Java Servlet基础整理(一)
    Linux下部署Tomcat
  • 原文地址:https://www.cnblogs.com/zhenglw/p/10973874.html
Copyright © 2011-2022 走看看