比较经典的题,题解看网上的。。https://www.cnblogs.com/GXZlegend/p/7054536.html

自己sort弄错了。。还以为是高斯消元写歪了。。

#include<bits/stdc++.h>
using namespace std; const int maxn = ;
const double esp = 1e-; struct Edge{int u,v;double E;}e[maxn*maxn];
int mp[maxn][maxn],d[maxn],n,m;
double E[maxn][maxn],b[maxn];
int cmp(Edge a,Edge b){return a.E>b.E;} void guass(){
for(int i=;i<=n;i++){
int maxx=i;
for(int j=i;j<=n;j++){
if(fabs(E[j][i])>esp&&fabs(E[j][i])>fabs(E[maxx][i]))maxx=j;
}
if(maxx!=i){
swap(E[maxx],E[i]);
swap(b[maxx],b[i]);
} if(fabs(E[i][i])<esp)continue;
for(int j=i+;j<=n;j++){
if(fabs(E[j][i])<esp)continue;
double rate=E[j][i]/E[i][i];
for(int k=i;k<=n;k++)
E[j][k]-=rate*E[i][k];
b[j]-=rate*b[i];
}
} for(int i=n;i>=;i--){
if(fabs(E[i][i])<esp)continue;
for(int j=i+;j<=n;j++)
b[i]-=E[i][j]*b[j];
b[i]/=E[i][i];
}
} int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++){
int u,v;
scanf("%d%d",&u,&v);
mp[u][v]=mp[v][u]=;
d[u]++;d[v]++;
e[i].u=u;e[i].v=v;
} //建立矩阵
E[n][n]=b[]=;
for(int i=;i<n;i++){
E[i][i]=;
for(int j=;j<=n;j++)
if(mp[i][j])E[i][j]-=1.0/d[j];
}
guass(); for(int i=;i<=m;i++){
int u=e[i].u,v=e[i].v;
e[i].E=b[u]/d[u] + b[v]/d[v];
}
sort(e+,e++m,cmp);
double ans=;
for(int i=;i<=m;i++)
ans+=e[i].E*i;
printf("%.3lf\n",ans);
}

期望dp+高斯消元——bzoj3143的更多相关文章

  1. BZOJ_3143_[Hnoi2013]游走_期望DP+高斯消元

    BZOJ_3143_[Hnoi2013]游走_期望DP+高斯消元 题意: 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机 ...

  2. 【BZOJ3143】[Hnoi2013]游走 期望DP+高斯消元

    [BZOJ3143][Hnoi2013]游走 Description 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 ...

  3. bzoj3143 游走 期望dp+高斯消元

    题目传送门 题意: 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点,获得 ...

  4. BZOJ3143: [Hnoi2013]游走(期望DP 高斯消元)

    Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3597  Solved: 1618[Submit][Status][Discuss] Descript ...

  5. HDU 2262 Where is the canteen 期望dp+高斯消元

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2262 Where is the canteen Time Limit: 10000/5000 MS ...

  6. hdu4418 Time travel 【期望dp + 高斯消元】

    题目链接 BZOJ4418 题解 题意:从一个序列上某一点开始沿一个方向走,走到头返回,每次走的步长各有概率,问走到一点的期望步数,或者无解 我们先将序列倍长形成循环序列,\(n = (N - 1) ...

  7. 【noi2019集训题1】 脑部进食 期望dp+高斯消元

    题目大意:有n个点,m条有向边,每条边上有一个小写字母. 有一个人从1号点开始在这个图上随机游走,游走过程中他会按顺序记录下走过的边上的字符. 如果在某个时刻,他记录下的字符串中,存在一个子序列和S2 ...

  8. LightOJ 1151 Snakes and Ladders 期望dp+高斯消元

    题目传送门 题目大意:10*10的地图,不过可以直接看成1*100的,从1出发,要到达100,每次走的步数用一个大小为6的骰子决定.地图上有很多个通道 A可以直接到B,不过A和B大小不确定   而且 ...

  9. P4457-[BJOI2018]治疗之雨【期望dp,高斯消元】

    正题 题目链接:https://www.luogu.com.cn/problem/P4457 题目大意 开始一个人最大生命值为\(n\),剩余\(hp\)点生命,然后每个时刻如果生命值没有满那么有\( ...

随机推荐

  1. LINUX内核及应用程序移植工作

    1. 添加工作用户 [root@localhost ~]#useradd -G root -g root -d/home/arm arm 2. 建立工作目录 [arm@localhost arm]$m ...

  2. 试探回溯法(backtracking)

    一.八皇后问题 国际象棋中皇后的势力范围覆盖其所在的水平线.垂直线以及两条对角线.现考查如下问题:在n*n的棋盘上放置n个皇后,如何使得她们彼此互不攻击,此时称她们构成一个可行的棋局.对于任何整数n ...

  3. QT开发资料

    QT开发入门资料 https://tmr.js.org/p/cc37608/ QT学习之路: https://www.devbean.net/

  4. selenium如何操作页面树状列表

    selenium如何操作页面树状列表??举个例子:我要怎么操作如下图所示的树状结构列表?我要对这个树状结构列表做什么操作? 一.思路 1.根据driver.find_element_by_xpath( ...

  5. js 数组排序 根据两个字段属性

    var task = [ {name:"aa", taskLevel:"3",createTime:"2019-12-18"}, {name ...

  6. 【缓存】缓存穿透、缓存雪崩、key重建方案

    一.缓存穿透预防及优化 缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,但是出于容错的考虑,如果从存储层查不到数据则不写入缓存层,如图 11-3 所示整个过程分为如下 3 步: 缓存层 ...

  7. "\r\n"与"</br>"的区别

    \n是换行,英文是New line,表示使光标到行首 \r是回车,英文是Carriage return,表示使光标下移一格 \r\n表示回车换行 \\  反斜杠 \$  美圆符 \"  双引 ...

  8. 下面是一段delphi代码,你在c# 中引入api 即可

    procedure TForm1.Button1Click(Sender: TObject);var i:HWND; cs:CREATESTRUCT;begin// i := FindWindowEx ...

  9. NX二次开发-UFUN更改图纸页比例UF_DRAW_set_drawing_info

    #include <uf.h> #include <uf_draw.h> #include <uf_part.h> UF_initialize(); //获得当前图 ...

  10. python从入门到大神---4、python3文件操作最最最最简单实例

    python从入门到大神---4.python3文件操作最最最最简单实例 一.总结 一句话总结: python文件操作真的很简单,直接在代码中调用文件操作的函数比如open().read(),无需引包 ...