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

5/26

5/26

该说不说图论真是挺神奇的啊哈哈哈哈哈哈哈
P2886 [USACO07NOV] Cow Relays G
作为一个图论初学者,更不会这道题了啊哈哈哈哈
看到这个题,对于这么庞大的数据范围,心态搞炸了啊哈哈哈哈
窝草
哦,好像也不大,注意到T是边,所以考虑Floyd
但是又注意到N极大,所以又不会了。
还是这个题还是好题
首先我们想出来的是,这个题需要用到邻接矩阵???
哦,点很小其实也很正常。
那就会做了。
结合前面的Floyd。
转移式子是\(F_{i,j}=min(F_{i,j},F_{i,k}+F_{k,j})\)
但是题解好像说的不是很详细,都是直接跳到矩阵。
具体地说,我们为什么要使用邻接矩阵呢?
那肯定是与矩阵有关。
对于矩阵乘法,它的式子是酱紫的:

\[C_{i,j}=\sum{A_{i,k}+B_{k,j}} \]

这个东西很像Floyd的转移对吧,但是好像我们不需要,我们需要的是min
这玩意儿是图论对吧,又不是数学,我们考虑定义一个新的计算方法

\[C_{i,j}=min(A_{i,k}+B_{k,j}) \]

简而言之:
\(A_{i,k}\)表示i走到k的最短路,\(B_{k,j}\)表示k到j的最短路,\(C_{i,j}\)表示i到j的最短路

问题是我们为什么要这么做,当然是为了优化啊!
我们发现,这个题让我们经过的边十分的多,在边的数量很多的时候,我们最短路一定会走重复的边。
这些边我们可以直接一次性算出来。
再不理解,就可以理解成倍增求Floyd行了///
这样的话矩阵快速幂就很快了。
当然还有一个优化就是,我们发现有一些点是没用的,直接离散化就行了。代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,T,s,e;
const int xx=1e3+5;
const int inf=1e12+18;
inline int read(){int x=0,f=1;char ch=getchar();while(ch<'0' || ch>'9'){if(ch=='-') f=-1;ch=getchar();}while(ch>='0' && ch<='9'){x=x*10+(ch-'0');ch=getchar();}return x*f;
}
int t[xx][xx],ans[xx][xx];
int id[xx],tol;
void mul_st(int a[][xx],int b[][xx],int res[][xx]){for(int i=1;i<=tol;i++)for(int j=1;j<=tol;j++){t[i][j]=inf;}for(int k=1;k<=tol;k++)for(int i=1;i<=tol;i++)for(int j=1;j<=tol;j++)t[i][j]=min(t[i][j],a[i][k]+b[k][j]);for (int i=1;i<=tol;i++)for (int j=1;j<=tol;j++)res[i][j]=t[i][j];
}
int G[xx][xx];
void ksm(int k){for(int i=1;i<=tol;i++){for(int j=1;j<=tol;j++){ans[i][j]=G[i][j];}}k--;while(k){if(k&1) mul_st(ans,G,ans);mul_st(G,G,G);k>>=1;}
}
int get(int x) {if (!id[x]) id[x]=++tol;return id[x];
}
signed main(){n=read(),T=read(),s=read(),e=read();for(int i=1;i<=1000;i++){for(int j=1;j<=1000;j++){G[i][j]=inf;}}for(int i=1;i<=T;i++){int w=read(),u=read(),v=read();u=get(u),v=get(v);G[u][v]=G[v][u]=w;}ksm(n);cout<<ans[get(s)][get(e)]<<"\n";return 0;
}

The End

http://www.jsqmd.com/news/890455/

相关文章:

  • g1000,TS9020,g3810,G5080,ts5480,G7080,MG3680,G3800,G2800,报错5B00,P07,5b02,1700,1704,5b04废墨垫清零软件,亲测有效
  • 提示词工程在 AI Coding 中的实战:如何让模型写出你想要的代码
  • 怎么跳过原神的动画——从GitHub小白到一键跳过
  • 高邮沙发翻新推荐换皮换布哪家好、匠阁、御匠、锦修三大品牌哪个靠谱公司、怎么选沙发翻新服务商 - 卓一科技
  • 2026年河南高低压成套电气设备选型避坑指南:从验收困局到安全交付的完整解决方案 - 年度推荐企业名录
  • Taotoken模型广场如何辅助技术选型与快速切换
  • 惠普tank 1005,开机提示错误代码 er-08 ,加了粉还是报错er08,黄灯闪烁成像鼓接近寿命期限报错,怎么办?亲测有效。
  • 【Spring 事务传播机制】
  • 通过 curl 命令直接测试 Taotoken 大模型 API 的连通性与功能
  • 从模型广场选型到接入观测一次搞定量身打造的AI方案
  • 嵌入式运动提示算法与多轴平台:直升机高保真飞行模拟器设计
  • 矢量数据 SHP 常见几何类型
  • 量子机器学习赋能低资源语言情感分析:BUQRNN与PN-BUQRNN架构解析
  • 2026年唐山外墙清洗、烟道保洁与商业保洁一体化解决方案深度横评指南 - 年度推荐企业名录
  • ThinkPad黑苹果系统架构探索:从硬件兼容到macOS生态的完整实现路径
  • 2026国产液体涡轮流量计十大品牌排名深度解析:技术实力与选型实战指南 - 仪表品牌排行榜
  • 上下文窗口不够用?代码仓库级 RAG 方案让 AI 记住整个项目
  • Transformer-BERT集成模型在英语自动对话中的深度理解与生成实践
  • 治污向治碳深度转型:千亿风口下优质有机废气治理厂家赋能行业精细化升级 - 品牌评测官
  • 森海塞尔Momentum 5登场!音质出色、降噪升级,能否挑战行业巨头?
  • 为什么选择Real-ESRGAN:3个核心优势解决你的图像修复难题
  • 安防设备与交通设备线上推广怎么做?双赛道企业如何一箭双雕 - 品牌推荐大师1
  • 从‘布局视图’到‘数据视图’:一个设置让ArcMap捕捉功能‘起死回生’
  • 2026年安阳高低压成套电气设备厂家推荐:如何选择安全可靠的配电解决方案 - 年度推荐企业名录
  • 某哪儿登录滑块逆向分析
  • 目标检测模型选型指南:YOLO、Faster R-CNN、DETR性能对比与实战部署
  • 2026 App开发技术全景解析:从框架选型到AI融合新趋势
  • ChanlunX缠论插件:让技术分析从复杂到简单的自动化革命
  • 别再硬啃长资料了:用 GPT-5.5 + 脑图工具,30 分钟梳理复杂主题
  • 企业级开源MES系统:基于ISA标准的制造业数字化转型完整解决方案