题解:P2269 [HNOI2002] 高质量的数据传输
Idea
看见
在 Floyd 的过程中,我们维护两个数值:从
题目要求丢包率优先,我们直接模拟即可。注意到在丢包率小的情况下延时不一定最小,所以延时不可以取最小值。
接下来我们解决丢包率更新的问题。我们设现在枚举到了
根据定义,我们不难发现:若使经过
不难发现如果保证
Code
#include<bits/stdc++.h>
using namespace std;
double dis2[205][205],b[205][205];
long long dis1[205][205],a[205][205];
int n,s,t;
int main(){
cin>>n>>s>>t;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>dis1[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>dis2[i][j];
}
}
for(int k=1;k<=n;k++){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(dis1[i][k]==-1||dis1[j][k]==-1)continue;
double nans=1-(1-dis2[i][k])*(1-dis2[j][k]);
if(nans<dis2[i][j]){
dis2[i][j]=nans;
dis1[i][j]=dis1[i][k]+dis1[j][k];
}
else if(nans==dis2[i][j]&&dis1[i][j]>dis1[i][k]+dis1[j][k]){
dis1[i][j]=dis1[i][k]+dis1[j][k];
}
}
}
}
printf("%lld %.4lf",dis1[s][t],dis2[s][t]);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】