- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
OI 刷题录——图论 前言 省选过后写了一些图论题,从中选出50 道集合 在这里,给想写图论的一点帮助。大部分较为基础, 神犇就不要过来虐我了。 大部分题目是POJ 的,每道题后都给出我提交情 况,写明WA ,TLE ,RE 等的原因,方便大家吸取教 训。 50 道题目包括:最短路3 道,Tarjan 4 道,最小 生成树3 道,差分约束系统6 道,网络流29 道(包 含线性规划与网络流24 题),杂项5 道。 提供我的每道题AC 代码以及其他资料的压缩包,以 下为下载地址:百度云网盘 115 网盘 最短路 spfa ,dijkstra 为图论基础算法,应熟练应用。 spfa 是可以扩展到二维的。 先将距离小于等于R 的点对连无向边,形成一张图。 dist[i][j] 表示从j 到达i 时的最短路,朝向为 向量(xi-xj ,yi-yj) 。 spfa 时枚举跟 i 相连的点 k ,由状态 dist[i][j]转移到状态 dist[k][i] ,更新完dist[k][i] 的值后将其入队(如果还未入队的 话) 。 spfa 结束后取Min{dist[n][i]} , 1 ≤i <n。 本题关键在于计算向量转角,题目中已经提示使用atan2( ) 。 atan2(x ,y) :返回向量(x,y) 跟x 轴正方向的夹角(弧度制) , 值域为(- π,π] ,(x,y)在x 轴上方返回值为正,下方为负。 两向量夹角:D=abs(atan2(x1 ,y1)-atan2(x2 ,y2)) ,如果 D π,则D=2 π-D ,最后应转成角度制即 D=D/ π*180 。 Compile Error :POJ 下sqrt 和atan2 应进行强制类型转换。 Wrong Answer :最开始没有用atan2 ,用了比较矬的方法。 滑槽顶、楼梯底和终点为传送入口,滑槽底、楼梯顶和起点 为传送出口。一旦达到入口就会被送到出口。 从每个出口向其后面的每个入口连一条有向边,贪心计算步 数作为权值,然后跑一遍spfa 即可得出答案。 步数计算: 1、一开始将步长定为最大,以这步长前进。 2 、如果会踩到中途某一传送入口则减小步长,如果还是入 口则再减小,减小到不是入口用最大步跨过去,继续以最大 步前进,又遇到入口则重复操作。 3 、如果一直减少到步长为 1 还是入口,则正在枚举的这两 点之间不连边。 Wrong Answer : 1、循环队列应head!=tail ,写成headtail。 2 、没有想到减小步长后还有可能是入口,应继续减小。 floyd 矩阵快速幂。 将 floyd 与矩阵乘法结合起来,写成这种形式: C[i][j]=Min{A[i][k]+B[k][j]} , 1 ≤i,j,k ≤n。 这样如果A 矩阵表示经过k1 条边的最短路,B 矩阵表示经过 k2 条边的最短路,那C 矩阵表示经过(k1+k2)条边的最短路。 于是便可以用矩阵快速幂。 由于不是在原矩阵上操作,所以本题的floyd 过程(或者说矩 阵乘法过程) 三重循环时可以将k 那层放在最里层。 Time Limit Exceeded :由于将快速幂改写非递归式的,还未 写熟练,所以写挫了。 Wrong Answer :同上。 Tarjan 包括强连通分量,双连通分量(割边,割点) 。 一个强连通分量里的顶点互相可达,本题只要求单向可达, 考虑先求强连通分量缩点。 缩点之后就会变成有向无环图。 显然,有向无环图中每对顶点单向可达,则必定是一条链, 若有分支,则位于不同分支上的点之间不存在路径。 所以本题只需求完强连通分量后判断新图是否是一条链。 链的判定: 方法一、dp 求图的最长链看链上的点数是否等于连通块数。 方法二、对有向无环图进行拓扑排序,某一时刻度为0 的点 多于1 个则证明存在分支。 Wrong Answer :tarjan 时连通分量退栈最后一个忘了top-- 。 任意两点间均有两条边不相交的路径是边双连通分量,显然 先tarjan 求割边和双连通分量。 双连通分量和割边构成一棵树,统计叶子节点(度为 1 的点
文档评论(0)