摘要:
给一个无向图,求出两个值,所有点到所有其他点的最短距离和,任意删除一条边后的这个值。数据规模是100点1000边。白书例题,不多说了直接对于每个点求出最短路树,对于每条边,如果它不是最短路树上的边,那么我们不需要对它进行最短路计算了,由于点数只有100,那么树上的边只有n-1,所以我们对于以每个点为... 阅读全文
摘要:
无向图。对于两个相连的点,如果A到终点的最短路径大于B到终点的最短路径,那么A可以往B走,求最终从起点到终点有多少种走法?首先我们可以直接预处理所有点到终点的最短路径。然后分别判断所有的边两点是否满足d[U[i]]>d[V[i]],然后把把满足条件的加入到一个新图中即可。由于新图是一个有向无环图,那... 阅读全文
摘要:
给一个无向图,有的边是特殊边,最多可以取一条特殊边,求最短路,并且输出路径。这样考虑,加入所有非特殊边,求出每个点到起点和终点的最短路。然后加入特殊边的时候,如果取当前这条特殊边,那么答案会是两点预处理路径长度加上该边长。直接保存最小答案即可。不过注意输出的格式还有一些其他的问题,还有加特殊边的时候... 阅读全文
摘要:
有n个宇航员,根据年龄限制,所有宇航员只能从事A或B中的一种任务,所有人都可以从事C的任务。有的宇航员之间相互讨厌,不能分在一组,求出一种满足条件的分配方案。2sat。mark[]中i+i和i+i+1分别表示i从事C工作或者他的特有工作。对于仇恨关系,我们可以知道U和V两个人不能同时从事C工作。于是... 阅读全文
摘要:
给一个无向图,外加一些特殊的连接原点的无向边。在不改变原点与所有点的最短路的情况下,最多可以删除多少条特殊边?首先我们把所有的边夹杂在一起。spfa跑出与所有点的最短路。接下来我们通过一次bfs来判断哪些特殊的边是可以删除的。这里面的原理跟迪杰斯特拉算法差不多。首先把原点加入队列,所有的特殊边按照长... 阅读全文
摘要:
白书上的例题。每种航班可以选择两种时间降落,如果想任意航班降落时间差的最小值最大,应该如何安排?二分时间,如果两个时间只差小于当前枚举的时间,说明这条边不可选,可以根据2sat的方法构图。然后判断安排方案是否合法即可。召唤代码君:#include #include #include #define ... 阅读全文
摘要:
判断能否从一个点同时找出两条不相交的路径到另外两个点。保证路径不相交,那么需要拆点。然后?好像就没什么了,直接最大流即可。不过,,,不需要求出所有的最大流,只要跑两次EK看看能否增广两次就行了。召唤代码君:#include #include #include #include #define max... 阅读全文
摘要:
给一个图,某些点需要单独以某一种颜色的线连接到1点,问如何安排能够使得整个图颜色最多的一条路颜色最少。显然,二分枚举然后加以颜色其实就是流量了,相当于对每条边限定一个当前二分的流量值,判断能否满流即可。召唤代码君:#include #include #include #define maxn 555... 阅读全文
摘要:
好题,有一些人在河的一边,想通过河里的某些点跳到对岸去。每个点最多只能承受一定数量的人,每人跳跃一次需要消耗一个时间。求所有人都过河的最短时间。看网上说是用了什么动态流的神奇东东。其实就是最大流吧,不过是一个很有意思的模型。每递增一个时间,所有的点增加一层,因为有的人可以站在上一个点不走动,最终每个... 阅读全文
摘要:
NBA打比赛。所有的比赛被分为多个团队。有的比赛是团内的,有的是与团外的队伍打的。给出团内每个队伍已得分,以及总共有多少场比赛,还有团内所有队伍之间有多少场比赛?问1队是否可能是分数最高的一个队伍。(题目没说是否唯一最高,枚举题意得知不是唯一)又是一个竞赛图的最大流。团内的比赛,如果有一个队伍是1队... 阅读全文