【jzoj3221】【HNOI2013】【游走】【高斯消元】【期望】
来源:互联网 发布:java runnable 编辑:程序博客网 时间:2024/05/21 09:26
题目大意
一个无向连通图,顶点从1 编号到N,边从1 编号到M。
小Z 在该图上进行随机游走,初始时小Z 在1 号顶点,每一步小Z 以相等的概率随机选择当前顶点的某条边,沿着这条边走到下一个顶点,获得等于这条边的编号的分数。当小Z到达N 号顶点时游走结束,总分为所有获得的分数之和。
现在,请你对这M 条边进行编号,使得小Z 获得的总分的期望值最小。
解题思路
考虑每一个点期望经过的次数,可以列出方程组,使用高斯消元求解。再求出每条边期望经过的次数,再贪心地编号即可。
code
#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#define LF double#define LL long long#define ULL unsigned long long#define fo(i,j,k) for(int i=j;i<=k;i++)#define fd(i,j,k) for(int i=j;i>=k;i--)#define fr(i,j) for(int i=begin[j];i;i=next[i])using namespace std;int const mn=500+9,mm=2.5*1e5+9,inf=1e9+7;int n,m,map[mn][mn],du[mn],uu[mm],vv[mm];LF b[mm],a[mn][mn],f[mn];int main(){ freopen("d.in","r",stdin); freopen("d.out","w",stdout); scanf("%d%d",&n,&m); fo(i,1,m){ int u,v; scanf("%d%d",&u,&v); map[u][v]++; map[v][u]++; du[u]++; du[v]++; uu[i]=u;vv[i]=v; } a[1][1]=a[1][n+1]=a[n][n]=1; fo(i,1,n-1){ a[i][i]=1; fo(j,1,n)if(i!=j)a[i][j]=-1.0*map[i][j]/du[j]; } fo(i,1,n){ if(!a[i][i]){ fo(j,i+1,n)if(a[j][i]){ fo(k,1,n+1)swap(a[i][k],a[j][k]); break; } } fo(j,i+1,n)if(a[j][i]){ LF tmp=a[j][i]/a[i][i]; fo(k,i,n+1)a[j][k]-=a[i][k]*tmp; } } fd(i,n,1){ f[i]=a[i][n+1]; fo(j,i+1,n)f[i]-=a[i][j]*f[j]; f[i]/=a[i][i]; } fo(i,1,m)b[i]=f[uu[i]]/du[uu[i]]+f[vv[i]]/du[vv[i]]; sort(b+1,b+m+1); LF ans=0; fo(i,1,m)ans+=b[i]*(m-i+1); printf("%.3lf",ans); return 0;}
阅读全文
0 0
- 【jzoj3221】【HNOI2013】【游走】【高斯消元】【期望】
- JZOJ3221. 【HNOI2013】游走
- jzoj3221 【HNOI2013】游走
- [HNOI2013]游走 期望+高斯消元
- BZOJ 3143 HNOI2013 游走 期望DP+高斯消元
- 【BZOJ3143】【Hnoi2013】游走 高斯消元 解期望方程
- 【BZOJ3143】【Hnoi2013】 游走 期望DP 高斯消元
- 【BZOJ3143】[Hnoi2013]游走【高斯消元】【期望DP】【贪心】
- bzoj 3143: [Hnoi2013]游走 期望dp+高斯消元
- [BZOJ3143][Hnoi2013]游走(概率期望+高斯消元)
- [BZOJ3143][Hnoi2013][概率与期望][高斯消元]游走
- [期望DP+高斯消元] BZOJ3143: [Hnoi2013]游走
- bzoj3143 [Hnoi2013]游走 (期望概率DP + 高斯消元)
- [BZOJ]3143: [Hnoi2013]游走 期望+高斯消元
- 【BZOJ 3143】 [Hnoi2013]游走 期望DP|高斯消元|贪心
- bzoj 3143: [Hnoi2013]游走 (概率与期望+高斯消元)
- hnoi2013游走 (高斯消元)
- 高斯消元裸题(期望)——【HNOI2013】游走
- python 报错'gbk' codec can't encode character '\ue5d1' in position 0:
- cocos2d-x中实现对话框
- 最长公共子串
- 归并排序
- Android Studio Can't use Subversion command line client:svn
- 【jzoj3221】【HNOI2013】【游走】【高斯消元】【期望】
- 记录Android studio使用所遇到的坑
- static【C#】
- 【开发环境】芯圣烧录工具HC-PM18 4.0的使用
- android 判断摄像头是否可用(6.0以下)
- 图片浏览器
- SQL 查询某字段不为空
- R语言实现决策树算法
- python学习笔记1 数据类型