当前位置: 首页 > 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://icebutterfly214.com/news/425/

相关文章:

  • 20251027周一日记
  • 学校协同云盘怎么选?2025年10大热门教育网盘推荐与对比
  • GPU集群之间的交互
  • CF1267G Game Relics
  • 102302115方朴第一次作业
  • 解题报告-梦熊 CSP-S2025 模拟赛T2
  • 鄙“站”麻将和算24,刷新后会换
  • 20232422 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 20232404 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 「WC2014-紫荆花之恋」题解
  • 谢谢你周医生
  • 来源未知
  • Date 10.27
  • 10.27及动手动脑
  • go包装bing搜索
  • 鼾声识别芯片方案和睡眠产品的应用场景
  • 2025年工程管理软件公司综合推荐榜:助力建筑行业数字化升级
  • Excel高性能异步导出完整方案!
  • 2025年多功能综合杆厂家排名前十推荐
  • 2025年度在线网站客服系统综合排行榜正式发布
  • JDD Oxygen智能零售论坛 | 《大模型时代的广告营销变革与实践》
  • 2025年市面上新加坡留学品牌、行业内公司及口碑产品推荐排行
  • 11-文件上传
  • TensorFlow与PyTorch深度对比分析:从基础原理到实战选择的完整指南 - 指南
  • Navicat 17 超详细保姆级下载安装教程:附激活工具使用步骤​
  • el-date-picker样式修改
  • 浅谈 Agent 开发工具链演进历程
  • 电梯调度算法结对编程作业
  • 2025质量可靠的义乌刺绣工厂推荐榜
  • DP1312多协议高性能读卡芯片支持A/B/Felaca/18092智能门锁读卡器模拟卡兼容PN512 - 动能世纪