wzy

news/2025/11/4 17:12:13/文章来源:https://www.cnblogs.com/why20031113/p/19190857

题目询问 $ s $ 到 $ t $ 的最短距离,我们可以发现我们就没法跑记录二维是否用过传送的方法。

可以发现 $ s->t $ 的最短距离可以看做 $ s->x->y->t $ ,$ x,y $ 为随便选的两个点,设 $ dis1[i] $ 为 $ s $ 到 $ i $ 的最短距离 ,$ dis2[i] $ 为 $ t $ 到 $ i $ 的最短距离 ,那么答案就是 $ \min\limits_{1\leq x \leq n,1\leq y \leq n} dis1[x]+(x-y)^2+dis2[y] $ 。

建两个图,一个正图,一个反图,跑两遍最短路求出 $ dis1,dis2 $ ,然后 $ n^2 $ 枚举每一个点,我们就有了 $ O(n^2) $ 的做法,考虑优化。

观察答案的式子,我们可以给它化简成 \(dis1[x]+x^2-2xy+dis2[y]+y^2\) 的形式,因为我们 $ O(n) $ 枚举 $ x $ ,所以每次枚举 $ dis1[x]+x^2 $ 都是一个定值,我们只要求 $ dis2[y]+y^2-2xy $ 的最小值就好,把每一个 $ y $ 当成一条线段,那么它的斜率就是 $ -2x $,b就是 $ dis2[y]+y^2 $ ,我们就可以直接套一个李超跑过去。

点击查看代码
#include<bits/stdc++.h>
#define int long long
#define ls(x) x<<1
#define rs(x) x<<1|1
using namespace std;
constexpr int N=2e5+10;
int head1[N],cnt1,head2[N],cnt2,dis1[N],dis2[N],n,m,S,T,vis[N],s[N<<2],k[N],b[N];
struct edge{int next,to,w;}e1[N<<1],e2[N<<1];
inline int in(){int k=0,f=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-') f=-1;c=getchar();}while(c>='0'&&c<='9') k=(k<<3)+(k<<1)+c-'0',c=getchar();return k*f;
}
void add1(int u,int v,int w){e1[++cnt1].next=head1[u],e1[cnt1].to=v,e1[cnt1].w=w,head1[u]=cnt1;
}
void add2(int u,int v,int w){e2[++cnt2].next=head2[u],e2[cnt2].to=v,e2[cnt2].w=w,head2[u]=cnt2;
}
struct node{int val,u;};
inline int operator>(node a,node b){return a.val>b.val;};
void dij1(int x){memset(dis1,0x3f,sizeof(dis1));memset(vis,0,sizeof(vis));dis1[x]=0;priority_queue<node,vector<node>,greater<node> > q;q.push({0,x});while(!q.empty()){node u=q.top();q.pop();if(vis[u.u]) continue;vis[u.u]=1;for(int i=head1[u.u];i;i=e1[i].next){int v=e1[i].to;if(dis1[v]>dis1[u.u]+e1[i].w){dis1[v]=dis1[u.u]+e1[i].w;if(!vis[v]) q.push({dis1[v],v});}}}
}
void dij2(int x){memset(dis2,0x3f,sizeof(dis2));memset(vis,0,sizeof(vis));dis2[x]=0;priority_queue<node,vector<node>,greater<node> > q;q.push({0,x});while(!q.empty()){node u=q.top();q.pop();if(vis[u.u]) continue;vis[u.u]=1;for(int i=head2[u.u];i;i=e2[i].next){int v=e2[i].to;if(dis2[v]>dis2[u.u]+e2[i].w){dis2[v]=dis2[u.u]+e2[i].w;if(!vis[v]) q.push({dis2[v],v});}}}
}
inline int calc(int id,int x){return k[id]*x+b[id];
}
void ins(int x,int l,int r,int u){if(!s[x]){s[x]=u;return;}if(l==r){if(calc(s[x],l)>calc(u,l))s[x]=u;return;}int mid=(l+r)>>1;if(calc(u,mid)<calc(s[x],mid)) swap(s[x],u);if(calc(u,l)<calc(s[x],l)) ins(ls(x),l,mid,u);if(calc(u,r)<calc(s[x],r)) ins(rs(x),mid+1,r,u);
}
int query(int x,int l,int r,int p){if(l==r) return calc(s[x],p);int res=calc(s[x],p);int mid=(l+r)>>1;if(p<=mid) res=min(res,query(ls(x),l,mid,p));else res=min(res,query(rs(x),mid+1,r,p));return res;
}
signed main(){// freopen("1.in","r",stdin);freopen("1.out","w",stdout);freopen("far.in","r",stdin);freopen("far.out","w",stdout);n=in(),m=in(),S=in(),T=in();for(int i=1;i<=m;++i){int u=in(),v=in(),w=in();add1(u,v,w);add2(v,u,w);}dij1(S);dij2(T);k[0]=0,b[0]=1e18;for(int i=1;i<=n;i++)k[i]=-2*i,b[i]=i*i+dis2[i];for(int i=1;i<=n;i++)ins(1,1,n,i);int ans=1e18;for(int i=1;i<=n;i++)ans=min(ans,query(1,1,n,i)+i*i+dis1[i]);printf("%lld\n",ans);return 0;
}
///////////////////////////////////////////////////
//                      ♪♪♪                      //
///////////////////////////////////////////////////
//つ ◕_◕ つ
//༼ つ ◕_◕ ༽つ

注:此题卡spfa,所以请用dij

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/955875.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年组合型铝合金桥架供货厂家权威推荐榜单:组合式铝合金桥架/阻燃铝合金桥架/专业生产铝合金桥架源头厂家精选

在新型基础设施建设和智能电网改造的推动下,组合型铝合金桥架市场需求持续增长。据2025年行业统计数据显示,中国电缆桥架市场规模已突破580亿元,其中铝合金桥架占比达到35%。 随着数据中心、轨道交通等项目建设加速…

25fall做题记录 - November - Amy

2025.11.1 括号生成 向右或向上走,不能超过对角线。 Catalan数枚举。 class Solution:def generateParenthesis(self, n: int) -> list[str]:ans=[]def dfs(l,res,r):if(l<r):returnif(l+r==2*n-1):ans.append(…

YACS2025年10月乙组

YACS2025年10月乙组T1. 反转 枚举反转了多少行和列(因为行和行之间本身没有区别,列同理),算一下是否有 \(k\) 个格子被反转。代码实现 #include <bits/stdc++.h> #define rep(i, n) for (int i = 0; i < …

Google Driver 读写 excel

Google Driver 读写 excel1. 启用 API 并创建凭证进入 Google Cloud 控制台, https://console.cloud.google.com/ 创建新项目; 搜索并启用 Google Drive API 和 Google Sheets API; 创建凭证:若为本地脚本 / 桌…

2025年河南镶牙机构权威推荐榜单:河南老人镶牙机构源头精选

随着人口老龄化加剧与口腔健康意识提升,河南镶牙市场需求显著增长。行业数据显示,2024年河南义齿修复市场规模突破18亿元,其中种植牙占比45%,全口修复需求年均增长率达20%。本文将基于机构资质、医生团队实力与临床…

Windows11升级专业版密钥

Windows 11 专业版是微软为追求高效能体验的用户打造的操作系统,以底层性能优化为核心,深度释放硬件潜力,适配多场景高性能需求。其性能优势集中体现在三大维度:硬件支持与调度上,支持高达 2TB 内存与双路 128 核…

分享一个自动化进行Oracle 重做日志组管理的脚本

分享一个自动化进行Oracle 重做日志组管理的脚本/* Formatted on 2025/11/04 15:00:00 (QP5 v5.300) */ -- File Name : db_add_logfile_optimized.sql -- Purpose : 优化版Oracle重做日志组管理脚本 -- 支持功能: --…

强化学习值函数与策略搜索两种方法对比和疑问解读

下面通过一个简单的“迷宫寻宝”例子,用伪代码和Python代码对比直接策略搜索(以PPO为例)和基于值函数的方法(以Q-Learning为例)的核心区别。 问题场景:迷宫寻宝环境:3x3网格迷宫,起点(0,0),宝藏在(2,2),障碍…

把 1 GHz 做成一粒米”——成都恒利泰科技 HT-LFCG-1000+

把 1 GHz 做成一粒米”——成都恒利泰科技 HT-LFCG-1000+LTCC 低通滤波器,DC-1000 MHz 全段驻波≤1.2,插损≤0.9 dB,4Pad 贴片只有 2 mm1.25 mm,比回形针的弯钩还小;5G 小基站、Wi-Fi 7、车载数传直接“贴脸”安放…

中文分词手艺全解析

中文分词手艺全解析pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "C…

2025qwb 线上赛wp

2025qwb 线上赛wp好长时间不碰ctf了有快两年了吧。谍影重重 6.0 是一个流量文件看一下data包头80007651995957c3884819ee 这段数据(因为之前基本没接触过流量,我直接问ai,ai也没有分析出是什么协议最后看了一下别人…

2025年钢带波纹管批发厂家权威推荐榜单:hdpe钢带波纹管/钢带管/钢带增强聚乙烯螺旋波纹管源头厂家精选

随着城镇化建设加速和市政工程标准提升,钢带波纹管市场需求持续增长。行业数据显示,2024年我国塑料管道年产量突破1800万吨,其中钢带增强HDPE螺旋波纹管在市政排水领域占比达35%,年均增长率稳定在12%。本文将基于企…

11.4每日总结

今天主要的课程有软件构造,软件企业文化,软件案例分析,完成了软件设计实验五和实验六。借助ai做好了企业文化的ppt,同时软考在即,网课已经全部看完了,难度很大压力也不小,加油!

深入解析:探索大语言模型(LLM):一文读懂通用大模型的定义、特点与分类

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年聚氨酯预聚体公司新排行榜,浇注聚氨酯原材料企业推荐

2025年聚氨酯工业持续向高性能、定制化、绿色化方向升级,聚氨酯预聚体、浇注型聚氨酯及浇注聚氨酯原材料作为下游制造的核心基础,其性能稳定性、工艺适配性与定制化能力,直接决定矿用筛板、胶辊、密封件、新能源配件…

2025年乐博智家保鲜盒直销厂家权威推荐榜单:乐博智家冰沙杯/乐博智家炒冰机/乐博智家刨冰机源头厂家精选

随着家居生活品质升级与健康意识提升,保鲜盒市场呈现高速增长态势。行业数据显示,2024年中国保鲜盒市场规模已突破180亿元,其中智能密封与环保材质产品增速达25%,厨房收纳系统化解决方案需求提升30%。本文将基于企…

2025 年打标机厂家最新推荐排行榜:结合协会测评权威数据,聚焦技术创新与行业适配的优质品牌全解析手持/点阵/金属/铭牌打标机公司推荐

引言 随着智能制造产业持续升级,打标机作为产品标识与追溯管理的核心设备,市场需求呈稳步增长态势,但行业内产品质量差异显著、技术水平参差不齐的问题仍较为突出。为给企业选购提供权威参考,本次榜单由专业机械制…

2025年注射成型烧结炉生产厂商新排行榜,碳化硅反应烧结炉厂家推荐

2025年新材料加工行业加速升级,注射成型烧结炉、碳化硅反应烧结炉及高温真空烧结炉等专用设备,已成为新型导热材料、特种陶瓷、碳材料、电池负极材料等领域的核心生产支撑,其温度控制精度、气氛稳定性、自动化程度直…

多项式学习小记

多项式 FFT 和 NTT 以后再补。 FFT 单位根,复数,乱推 NTT 将单位根变成原根,但模数要满足对于 \(\log_2(\text{序列长度})<n\) ,\(p=2^nx+1\) MTT 即任意模数。 这时 NTT 使用不了,FFT 会被卡精度。 方法1 使用…

Oracle Exadata存储节点主动替换磁盘最佳实践

Oracle Exadata存储节点主动替换磁盘最佳实践我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大…