前言
今天我打开考试题目一看,发现四道考试题甚至看不出来是什么算法。
于是我听大佬说,这个题啊,是线段树优化建图板子题。很毒瘤的,不搞线段树优化建图就会爆\(0\)。
我害怕极了,自从我打暴力的水平提高,模拟退火用得越发熟练,玄学预估答案越发准确,我就没爆\(0\)过了。(至少有20分吧
所以我赶紧开始现学线段树优化建图,希望能在四个小时内学会模板
原理
结合着线段树优化建图模板题来说
题意:
有一个n个节点的有向有权图,现在给出三个类型的边:
- 从u到v的一条边权为w的边
- 从u到区间[l,r]任意一点,都有权值为w的边
- 从区间[l,r]任意一点到u,都有权值为w的边。
简单来说,即单点到单点,单点到区间,区间到单点。
要求求出1到其他所有边点的最短路。
首先最短路好想,直接上dij。(我不太会spfa,但我估计这题不太能用spfa)
难的是建图。如果直接暴力建图,真的直接每个点都向整个区间连边的话,空间是不够的
然后就有了线段树优化建图。
出树和入树
假设节点数量为3,单点 3 向[2,3]连边,权值为17。
那么建图应该是这样的:
初始图:
在还没有加边的时候,是这样的:
加上这条单点向区间的边,图是这样的:
因为都是叶子节点所以不明显(所以题目给的什么鬼样例啊)
假设再建一个单点1向区间[1,3]连边,权值为10.
如果要跑这样一条路:1——>2
那么就是这样跑的:
因为树内部是\(0\)所以最终的路径长还是10.
同理,如果是区间向单点连边。
如[1,3]向1连权值为12的边
标签:连边,单点,线段,建图,区间,优化 来源: https://www.cnblogs.com/Nickle/p/15135794.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。