当前位置: 首页 > news >正文

P3232 [HNOI2013] 游走

考虑贪心。

随机游走则显然每条边期望经过次数越大则其编号应越小。

每条边的期望经过次数难以计数,考虑每个店期望经过次数,设计状态 \(f_i\) 表示点 \(i\) 期望经过次数。

转移:

\(f_i=\sum_{v\in e_i}f_v\cdot \frac{f_v}{d_v}+[u=1]\)

其中 \(d_i\) 为点 \(i\) 的度数,而 \([u=1]\) 则是因为初始在 1 也算一次经过次数,\(f_n\)

而这种方程无法按照某种顺序转移,发现 \(n\le 500\) 考虑高斯消元,把每个 \(f_i\) 当做一个未知数,则为 \(n\)\(n\) 元方程组,直接 \(O(n^3)\) 求解。

#include<bits/stdc++.h>
#define fin(x) freopen(#x".in","r",stdin)
#define fout(x) freopen(#x".out","w",stdout)
#define fr(x) fin(x),fout(x);
#define Fr(x,y) fin(x),fout(y)
#define INPUT(_1,_2,FILE,...) FILE
#define IO(...) INPUT(__VA_ARGS__,Fr,fr)(__VA_ARGS__)
using namespace std;
#define mp make_pair
#define pii pair<int,int>
#define fi first
#define se second
#define pb push_back
#define cfast ios::sync_with_stdio(false);cin.tie(0),cout.tie(0)
#define ll long long
#define ull unsigned long long
#define intz(x,y) memset((x),(y),sizeof((x)))
char *p1,*p2,buf[100000];
#define nc() (p1==p2 && (p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++)
inline ll read(){ll x=0,f=1;char ch=nc();while(ch<48||ch>57){if(ch=='-')f=-1;ch=nc();}while(ch>=48&&ch<=57)x=x*10+ch-48,ch=nc();return x*f;
}
void write(pii x){cout<<x.fi<<' '<<x.se<<'\n';}
void write(vector<auto>x){for(auto i:x)cout<<i<<' ';cout<<'\n';}
inline int pcount(ll x){for(int i=0,res=0;;res+=(x>>i)&1,i++)if(i>60)return res;
}
inline ll lowbit(ll x){return x&-x;}
const int N=505,M=2e5+5;
int n,m,d[N],_u[M],_v[M],E[M];double ans,a[N][N];vector<int>e[N];
void add(int u,int v){e[u].pb(v),e[v].pb(u);}
double calc(int i){int u=_u[i],v=_v[i];return (u==n?0:a[u][n+1]/d[u])+(v==n?0:a[v][n+1]/d[v]);
}
inline void UesugiErii(){cin>>n>>m;for(int i=1;i<=m;i++)cin>>_u[i]>>_v[i],++d[_u[i]],++d[_v[i]],add(_u[i],_v[i]);for(int i=1;i<=n;a[i][i]=1,i++)if(i<n)for(int v:e[i])a[i][v]=-1.0/d[v];a[1][n+1]=1;for(int i=1;i<n;i++){double mx=0;int id=0;for(int j=i;j<n;j++)if(abs(a[j][i])>mx)mx=abs(a[j][i]),id=j;for(int j=i;j<=n+1;j++)swap(a[i][j],a[id][j]);for(int j=i+1;j<=n+1;j++)a[i][j]/=a[i][i];a[i][i]=1;	for(int j=i+1;j<n;j++){for(int k=i+1;k<=n+1;k++)a[j][k]-=a[j][i]*a[i][k]; a[j][i]=0;}}for(int i=n;i;i--)for(int j=i+1;j<=n;j++)a[i][n+1]-=a[j][n+1]*a[i][j];for(int i=1;i<=m;i++)E[i]=i;sort(E+1,E+1+m,[&](int x,int y){return calc(x)<calc(y);});for(int i=1;i<=m;i++)ans+=(m-i+1)*calc(E[i]);cout<<fixed<<setprecision(3)<<ans;
}
signed main(){//IO();cfast;int _=1;//cin>>_;for(;_;_--)UesugiErii();return 0;
}
http://www.fuzeviewer.com/news/425/

相关文章:

  • 【CI130x 离在线】如何运行 curl 脚本
  • 这才是真正的AI NAS!极空间私有云Z2Ultra评测
  • 新东方第三节课名言作文
  • 十月阅读_3
  • 中考_体育
  • 常见问题处理 --- phpstudy启动mysql失败
  • 20232308 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 【密码学实战】openHiTLS PKCS12命令行程序: PKCS12文件生成与解析
  • 「CTSC2017-游戏」题解
  • vue3 vue3-form-element表单生成工具 输入框增加后缀
  • 20232402 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 掘金2025年:数字化商业浪潮下,如何选对平台与伙伴?一站式多商户商城系统推荐榜发布,多商户商城代理招募/多商户项目合伙人加盟/一站式开店代理项目加盟
  • 为医疗器械行业搭建“数字桥梁”,破解协同效率与合规难题
  • PostgreSQL 服务版
  • 20232307 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 2025年10月办公家具公司评价榜:基于真实数据的权威推荐清单
  • vue+antv/x6项目使用问题
  • 《程序员修炼之道:从小工到专家》前五分之一观后感
  • 坐标系与投影关系
  • 用gdb的动态视角看ret2text的实现
  • 1027随笔
  • ask_skill
  • SVN 主分支合并之通过主分支合并子分支执行流程
  • 现代c++编程体验2
  • 化繁为简:解密国标GB28181算法算力平台EasyGBS如何以兼容性与易用性赋能安防集成
  • 计算机毕业设计springboot音乐畅听系统 基于Spring Boot框架的智能音乐播放系统编写 Spring Boot驱动的音乐在线欣赏平台构建
  • vue2 封装组件使用 v-mode【el-radio,el-input】
  • P11993 [JOIST 2025] 迁移计划 题解
  • ERP和CRM、SRM、MES之间的关系,怎么理解?
  • 2025年市面上氟碳铝单板品牌、市场氟碳铝单板公司、国内氟碳铝单板生产厂家、2025年氟碳铝单板品牌、口碑好的氟碳铝单板产品综合评测