BZOJ 3143: [Hnoi2013]游走
来源:互联网 发布:电子手抄报软件 编辑:程序博客网 时间:2024/04/29 23:20
HNOI2013 get!
高斯消元求出每个点经过的次数的期望,然后算出每条边的期望
然后套排序原理,乱序和最小
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;#define double long doubleconst int N=500+5;const double eps=1e-9;double g[N][N];void Gauss(int n){for(int i=1;i<=n;i++){int j;for(j=i;j<=n;j++)if(fabs(g[j][i])>eps)break;for(int k=i;k<=n;k++)swap(g[i][k],g[j][k]);for(j=i+1;j<=n;j++){double t=g[j][i]/g[i][i];for(int k=i;k<=n+1;k++)g[j][k]-=t*g[i][k];}}for(int i=n;i>=1;i--){for(int j=i+1;j<=n;j++)g[i][n+1]-=g[j][n+1]*g[i][j];g[i][n+1]/=g[i][i];}}bool e[N][N];double deg[N];double path[N*N];int main(){//freopen("a.in","r",stdin);int n,m;scanf("%d%d",&n,&m);while(m--){int u,v;scanf("%d%d",&u,&v);e[u][v]=e[v][u]=1;deg[u]+=1.0;deg[v]+=1.0;}for(int i=1;i<=n;i++){g[i][i]=1.0;for(int j=1;j<=n;j++)if(e[j][i])g[i][j]-=1.0/deg[j];g[i][n]=0.0;}g[n][n]=0.0;g[1][n]=1.0;Gauss(n-1);double ans=0.0;int tot=0;for(int i=1;i<=n;i++)for(int j=i+1;j<=n;j++)if(e[i][j])path[++tot]=g[i][n]/deg[i]+g[j][n]/deg[j];sort(path+1,path+1+tot);for(int i=1;i<=tot;i++)ans+=path[i]*(tot-i+1);printf("%.3Lf\n",ans);return 0;}
0 0
- [BZOJ 3143][Hnoi2013]游走
- bzoj 3143: [Hnoi2013]游走
- BZOJ 3143: [Hnoi2013]游走
- BZOJ 3143 [Hnoi2013] 游走
- bzoj 3143: [Hnoi2013]游走 高斯消元
- BZOJ 3143 [Hnoi2013]游走 高斯消元
- BZOJ 3143 HNOI2013 游走 期望DP+高斯消元
- bzoj 3143: [Hnoi2013]游走 期望dp+高斯消元
- bzoj 3143 hnoi2013 游走(高斯消元)
- bzoj 3143: [Hnoi2013]游走(高斯消元)
- [BZOJ]3143: [Hnoi2013]游走 期望+高斯消元
- 3143: [Hnoi2013]游走
- 【BZOJ 3143】 [Hnoi2013]游走 期望DP|高斯消元|贪心
- bzoj 3143: [Hnoi2013]游走 (概率与期望+高斯消元)
- 【HNOI2013】游走
- 【HNOI2013】游走
- 【HNOI2013】游走
- bzoj-3143 游走
- hdu1284(母函数打表)
- Android编程之LocalBroadcastManager源码详解
- oracle 游标详解
- JQ基本知识代码示例
- 关于小组所要做的APP的想法
- BZOJ 3143: [Hnoi2013]游走
- Java进阶学习第一天——HTML入门
- Image Watch插件学习笔记
- 在Java中如何遍历Map对象
- 剑指Offer--003--二维数组中的查找
- Android 6.0 运行时权限处理完全解析
- 【计算机视觉】time of flight (TOF)
- 跟着原子学习stm32之内存管理
- Oracle数据库入门—基础知识