其他分享
首页 > 其他分享> > NOIP2020 做题练习(day1)

NOIP2020 做题练习(day1)

作者:互联网

A - [JSOI2007]重要的城市

题面

首先建出最短路图。

重要的城市其实就是指删除这个点后至少有一对点的最短路会改变。

然后统计一下每个点的度数,对于每条边 \((u, v)\),如果 \(v\) 的度数为 \(1\),那么 \(u\) 就是一个重要的城市。

因为删去了 \(u\) 之后,一定存在一个点 \(u'\),使得 \(u'\) 与 \(v\) 在这张最短路图中不连通,即他们的最短路改变。

代码

B - [USACO09JAN]Safe Travel G

题面

首先考虑建出最短路树。

然后对于每一条非树边 \((u,v,w)\),它对于 \(u\)、\(v\) 路径上的点(不包含它们的 LCA)的贡献就是 \(dis_u+dis_v+w\)。一个在 \(u\)、\(v\) 路径上的点 \(p\) 此时的答案就是 \(dis_u+dis_v+w-dis_p\)。由于 \(dis_p\) 固定,那么我们的目标就是最小化 \(dis_u+dis_v+w\)。

于是可以按照这个值从大到小排序,依次覆盖,最后单点查值即可。

代码 1

当然也可以不排序,直接覆盖,写一个区间取 min、单点查值的线段树。

代码 2

C - [FJOI2014]最短路径树问题

题面

还是先建出最短路树,然后就是点分治模板了。

不过代码是真的难写

代码

D - [HNOI2006]公路修建问题

题面

显然二分。

check 的时候可以贪心,先修建一级道路花费 \(\le mid\) 的道路,如果 \(\le k\) 就不行;然后修建二级道路花费 \(\le mid\) 的道路。最后判断一下图是否连通即可。

代码

标签:le,题面,短路,练习,day1,建出,NOIP2020,代码,dis
来源: https://www.cnblogs.com/xsl19/p/13662512.html