bzoj 3143 hnoi2013 游走(高斯消元)
来源:互联网 发布:域名卖到国外 编辑:程序博客网 时间:2024/05/16 14:12
这道题说是一道概率题但这种概率实际上就是一道高斯消元。
每个点到的概率等于所以与他相连的点的概率除以相应的边数,构造出来就是个方程组,高斯消元解一波,然后每个点的可能性就是他所连的点的可能性除以边数相加。
高斯消元的解释(不会的可以去看看)
最后贪心就好。
代码如下:
#include<cstdlib>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>using namespace std;const int maxn=505;struct edge{ int x,y,id; double sum; friend bool operator <(edge a,edge b) { return a.sum-b.sum>0.000000001; }}e[maxn*maxn];int n,m;double c[maxn][maxn]={0};int out[maxn]={0};bool vis[maxn][maxn]={0};double d[maxn];void gauss(){ int i=1,j=1; while(i<=n&&j<=n) { int t=i; for(int k=i+1;k<=n;k++) if(fabs(c[k][j])>fabs(c[t][j])) t=k; if(fabs(c[t][j])>0) { if(t!=i)for(int k=j;k<=n+1;k++) swap(c[t][k],c[i][k]); double tt; for(int k=i+1;k<=n;k++) if(fabs(c[k][j])) { tt=c[k][j]/c[i][j]; for(int x=j;x<=n+1;x++) c[k][x]-=c[i][x]*tt; } i++; } j++; } for(int i=n;i>=1;i--) { for(int j=i+1;j<=n+1;j++) c[i][n+1]-=c[i][j]*c[j][n+1]; c[i][n+1]/=c[i][i]; }}void init(){ scanf("%d%d",&n,&m); int x,y; for(int i=1;i<=m;i++) { scanf("%d%d",&e[i].x,&e[i].y); vis[e[i].x][e[i].y]=vis[e[i].y][e[i].x]=1; out[e[i].x]++,out[e[i].y]++; } n--; for(int i=1;i<=n;i++) c[i][i]=-1; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if(vis[i][j]) c[i][j]=1.0/(double)out[j]; c[1][n+1]=-1; gauss();}int main(){ freopen("in.txt","r",stdin); init(); for(int i=1;i<=m;i++) e[i].sum=c[e[i].x][n+1]/out[e[i].x]+c[e[i].y][n+1]/out[e[i].y]; sort(e+1,e+1+m); double ans=0; for(int i=1;i<=m;i++) ans+=e[i].sum*i; printf("%.3lf",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]游走
- BZOJ 3143 [Hnoi2013] 游走
- bzoj 3143: [Hnoi2013]游走 (概率与期望+高斯消元)
- BZOJ 3143 HNOI2013 游走 期望DP+高斯消元
- bzoj 3143: [Hnoi2013]游走 期望dp+高斯消元
- [BZOJ]3143: [Hnoi2013]游走 期望+高斯消元
- hnoi2013游走 (高斯消元)
- 【BZOJ 3143】 [Hnoi2013]游走 期望DP|高斯消元|贪心
- 3143: [Hnoi2013]游走
- [BZOJ3143][Hnoi2013]游走(概率期望+高斯消元)
- [HNOI2013]游走 期望+高斯消元
- BZOJ 3143 游走 高斯消元
- 算法训练 寻找数组中最大值
- Codeforces Round #404 (Div. 2) 题解(待续)
- Redis大鹏博客转载____(一)Redis简介
- 认证 (authentication) 和授权 (authorization) 的区别
- 微信小程序(应用号)实战课程之记账软件开发
- bzoj 3143 hnoi2013 游走(高斯消元)
- 802.11 a, b 和g的区别
- python爬虫(二)
- 正则表达式基础详解
- CSS 图片水印
- 48. Rotate Image
- C#邮件发送CDO的COM组件发送方式
- Android Studio 打包在eclipse中打过包的项目
- log4j MDC用户操作日志追踪配置