![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
邻接表
disPlayLzy_
梦在前方,路在脚下
展开
-
洛谷 P1462 通往奥格瑞玛的道路
歪嘴哦想去奥格瑞玛即城市n,如果能到达的话,求在可行的所有路径中,f[i]的值的最小值,不能到达输出“AFK”。题解: 二分查找+spfa+队列: 1.找出城市中最小收费跟最大收费,然后对费用做2分查找。 2.对于二分的费用mid,做spfa,如果i可以到达奥格瑞玛且血量不超过歪嘴哦的血量就向前二分,不然到达就向后二分。 3.如果二分做完了,还不能到达就输出“AFK”,否则输出二分的结果。v原创 2017-03-24 19:12:28 · 559 阅读 · 0 评论 -
Luogu P1351 联合权值___领接表+思维
题目大意:无向连通图G有n个点,n-1条边,点从1到n依次编号,编号为i的点的权值为Wi每条边的长度均为1图上两点(u,v)的距离定义为u点到v点的最短距离。对于图G上的点对(u,v),若它们的距离为2,则它们之间会产生Wu×Wv 的联合权值。 请问图G 上所有可产生联合权值的有序点对中,联合权值最大的是多少?所有联合权值之和是多少?题解:这题仔细想想其实很简单, 我们设 sum...原创 2018-04-21 15:30:51 · 215 阅读 · 0 评论 -
SSL P2516 2014年中山市选拔赛 dwarf tower
题目大意: 给出N个物品直接购买的价格,以及M组合成方式,即物品x与物品y可以合成物品z,求出获得第1个物品的最小花费。题解: spfa: d[i]表示合成第i个物品的最小值。 1.d[i]的初值是一开始直接购买第i个物品的值。 2.m组x,y,z,对于每组x,y,z,可以变成2条权值边,即x到z,权值为d[y],y到z,权值为d[x]。 3.枚举物品,以第i个物品为起点做spfa原创 2017-03-28 19:47:01 · 364 阅读 · 0 评论 -
POJ P1330 Nearest Common Ancestors
题目大意:给出T组数据,每组有N个点,N-1条边,构成一颗树,给出一对点[x,y],问x和y的最近公共祖先是多少。2<=N<=10,000题解:这题是LCA的模版题吧。。 x,y的最近公共祖先,你可以这么想,x到根节点的路径跟y到根节点的路径的第一个交点z就是了。 tarjan离线做法,因为可以在一次遍历中把查询解决,所以时间复杂度为O(N+Q) tarjan解释这种东西想了很久觉得,还是意会原创 2017-12-28 20:38:05 · 214 阅读 · 0 评论 -
jzoj 2017.9.30 模拟赛
T1: 水果盛宴: 题目大意: 题目描述 贝茜的有一个饱腹值上限 T,吃一个橘子会增加她 A 点饱腹值,吃一个柠檬会增加她 B 点饱腹值,橘子跟柠檬吃不完。 如果她愿意,贝茜可以最多喝一次水,这会立即使她的饱腹值变成一半。 帮助贝茜求出她可以获得的最大饱腹值。1<=T<=5,000,000,1<=A,B<=T 题解:从0开始去递归它出现的所有情况,在里面找一个最大值,注意越界和重复情况原创 2017-10-06 19:23:15 · 1098 阅读 · 0 评论 -
2017.8.07 SSL 模拟赛
T1: 小游戏game: 题目大意: 有M个凳子,顺时针依次编号为1,2,3……,M。从编号为S的凳子开始,每次先顺时针数N个凳子,将第N个凳子搬走,然后再逆时针数K个凳子,将第K个凳子搬走。每次都这样先顺时针数N个,再逆时针数K个,直到搬完,求M个凳子的搬走顺序。100%: M<=1000题解: 模拟: 按着他的要求模拟着走,因为数据只有1000,所以这样也不会炸,然后注意一下边界,越原创 2017-08-07 20:37:23 · 488 阅读 · 0 评论 -
jzoj P2249 蒸发学水
题目大意:机房的位置一共有n 行m 列,一开始每个位置都有一滴学水,TerryHu 决定在每一个时刻选择 一滴学水进行蒸发,直到机房里不再存在学水。 TerryHu 想知道在每个时刻之后,机房里剩下的学水构成了几个联通块。题解:邻接表+并查集: 这题我们直接暴力的去做,很明显只能过60分的点 即暴力的枚举,时间复杂度:O((NM)^2)我们用邻接表去记录不同大小的数的位置 然后我们逆向思维原创 2017-12-15 21:15:09 · 996 阅读 · 2 评论 -
NOIP 2009 提高组 最优贸易
题目大意: 阿龙要从某个城市进一个水晶球然后拿去任意一个城市卖赚取差价来挣取旅费,给出n个城市的水晶球价钱与m 条道路表示城市x与城市y之间相同以及这条路是单向或者双向的,求阿龙最多赚取的旅费。题解: 不难发现,题目是求2点之间的差价的最大值。 1.spfa求出起点1到第i个点时水晶球能达到的最小的价格。(1<=i<=n) 2.再跑一遍spfa把能从终点到达的点标记。 3.在标记的点中找出原创 2017-03-24 20:40:39 · 474 阅读 · 0 评论 -
SSL P2721 极其简单的最短路问题
题目大意: 给出N个点,M条边,以及目标点T,求点1到T的最短路是多少。30%:n<=10 m<=20 60%: n<=1000 m<=20000 100%: n<=5000000 m<=10000000题解: 这题就是裸的spfa,没什么好说了,注意几点; ①无向边,建边要双向 ②邻接表查询 ③数组注意大小 ④spfa 时间复杂度:O(N+M)var next,s,t原创 2017-09-15 21:41:24 · 492 阅读 · 0 评论 -
SSL P2133 腾讯大战360
题目大意: 有N个点,腾讯与360分别在点S,点T,给出M个a,b,c,表示点a到点b有一条连边(双向边),耗时为c,他们想在最短的时间内相遇,然后干一架。,求二者“相遇”的最短时间,当然,如果无法相遇则输出“Peace!” 在此我们定义“相遇”为:两个人皆在同一个有编号的城市上就可以了,并且这两个人均可以站在原地等另外一个人。也就是说,在这里我们不考虑两人在路中间相遇。 每组数据n=5000原创 2017-08-13 20:18:13 · 578 阅读 · 0 评论 -
SSL P2677 飞行fly
题目大意: 有n个城市,编号为0到n-1。小B想从城市s到城市t。他选择了一家航空公司,这家公司有m种航线,每种航线连接了两个不同的城市。小B可以免费在最多k种航线上搭乘飞机。问小B最小花费是多少。对于前30%的数据,2<=n<=50,1<=m<=300,k=0; 对于前50%的数据,2<=n<=600,1<=m<=6000,0<=k<=1; 对于前100%的数据,2<=n<=10000,原创 2017-08-11 07:38:50 · 396 阅读 · 0 评论 -
jzoj P1520 破碎的路径
题目大意: 比尔去很多地方旅游过。他在旅游的同时留下了很多简短的旅行笔记。笔记的形式是这样的: 出发地 目的地 如下面就是三条合法的note: SwimmingPool OldTree BirdsNest Garage Garage SwimmingPool 他的笔记现在乱了,请你帮他把N个笔记的顺序整理好,先写的笔记在前面。幸运的是,同一个地方比尔至多只去过一次。也就是说,在这些笔记原创 2017-05-28 09:16:03 · 654 阅读 · 0 评论 -
jzoj P2132【2017.4.21普及】架设电话线
题目大意: FJ的农场周围分布着N根电话线杆,任意两根电话线杆间都没有电话线相连。一共P对电话线杆间可以拉电话线,第i对电话线杆的两个端点分别为A_i、B_i,它们间的距离为L_i 。数据中保证每对{A_i,B_i}最多只出现1次。FJ的任务是找一条将1号和N号电话线杆连起来的路径。电信公司最终同意免费为FJ连结任意K对电话线杆。此外的电话线,FJ需要为它们付的费用,等于其中最长的电话线的长度(每原创 2017-04-22 15:08:13 · 1063 阅读 · 0 评论 -
洛谷 P3371 【模板】单源最短路径
题目大意: 在一个有向图中,有M条边(1<=M<=500000),N个点(1<=N<=10000),求点S到1~N个点的最短路径长度,无最短路就输出maxlongint。spfa+队列优化: dis[i]表示点s到i的最短路径,一开始dis数组为maxlongint。 1.用队列优化,就可以省略枚举每个点的时间,由O(M^2)变成了O(M)。 2.跑一波spfa,然后输出就好了。var原创 2017-03-08 17:07:39 · 607 阅读 · 0 评论 -
洛谷 P1144 最短路计数
题目大意: 在一个无向无权图中,求出点1到1~N点的最短路的数量。题解: spfa+队列优化: ans[i]表示有多少条1到i点的最短路。 双向图,要把2个相连的点正反方向都存储。 做一个spfa,如果dis[s[i]]+1小于当前的dis[t[i]]就替换,并且ans[t[i]]就等于ans[s[i]]的数量,如果等于把ans[t[i]]跟ans[s[i]]合并。 最后输出就好了,不过原创 2017-03-08 17:31:05 · 516 阅读 · 0 评论 -
洛谷 P2296 寻找道路
题目大意: 在一个有向图中找出2点之间的最短路,并且路径上的所有点的出边所指向的点都直接或间接与终点连通。题解: spfa+队列+dfs: 1.从终点方向搜,把终点能到的点标记可到达。 2.把终点能到达的点的出边判断,如果出边未被标记则状态更新为不可到达。 3.做spfa,若t[i]可以到达就做,不然不做。var d,s,t,next,list:array [0..200001]原创 2017-03-15 15:51:50 · 379 阅读 · 0 评论 -
Poj P3349 Snowflake Snow Snowflakes___hash+邻接表
题目大意:给出NNN片雪花,某一个角靠开始顺时针或者逆时针旋转后,依次6个角的长度,依次6个角的长度,依次6个角的长度,请回答其中是否存在任意2片2片2片雪花为同一片雪花。0≤N≤1050≤N≤1050≤N≤10^5分析:对每一片雪花的6个长度a[1],a[2],...,a[5],a[6],6个长度a[1],a[2],...,a[5],a[6],6个长度a[1],a[2],...,...原创 2018-07-02 10:31:56 · 212 阅读 · 0 评论