随笔分类 - 图论
摘要:题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2007 最后一定是起点周围一片0,终点周围一片1; 所以建出图来跑最短路即可。 代码如下:
阅读全文
摘要:题目:http://codeforces.com/contest/360/problem/E 首先,每条边不是选 \( l[i] \) 就是选 \( r[i] \); 做法就是先把边权都设成 \( r[i] \),然后做 \( dijkstra \),如果有一条可改的边 \( (a,b) \) 而且
阅读全文
摘要:题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2395 参考博客:https://www.cnblogs.com/autsky-jadek/p/3959446.html 但复杂度不太会算; 递归边界不要取两个点相等,而是叉积>=0 。 代码如
阅读全文
摘要:题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1001 平面图最小割可以转化成最短路问题; 建图时看清楚题目的 input ... 代码如下:
阅读全文
摘要:题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2259 相邻点之间连边权为1的边,就是水最短路了; 要注意点上的数不能改成负数,但是想一想改成负数还不如一开始就不走到这个点,所以这个不必担心; 注意1号点到2号点不能连边权为1的边,因为实际上
阅读全文
摘要:题目:https://www.luogu.org/problemnew/show/P1578 枚举左边界,向右枚举右边界,同时不断限制上下边界,最后右边界是整个图的边界; 由于没有做左边界是整个图的边界的情况,所以再从右往左做一遍; 还没有做左右边界都是整个图的边界的情况,所以再特殊做一下; 注意题
阅读全文
摘要:题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4289 把边转化成点,同一个原有点相连的边中,边权小的向大的连差值的边,大的向小的连0的边; 一开始想的是给每个新点记一个点权是这个点(边)原来的权,走到它时先加上点权,因为要在原图上经过这条边
阅读全文
摘要:题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4398 按二进制每一位是 0/1 把 1 号点的儿子分成两组,分别作为起点和终点跑多起点最短路,最优解的起点和终点总有一次会被分到不同组里; 太久没写 dijkstra 竟然WA了4次...别忘
阅读全文
摘要:题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3714 因为每个杯子下最多一个小球,所以从奇偶性就可以看出有没有球; 询问一段区间,等于知道一段区间的奇偶性; 设 s[i] 表示从 0 到 i 的小球总数的奇偶性,已知 s[0] = 0; 那
阅读全文
摘要:题目:https://www.luogu.org/problemnew/show/P1979 真是一道好题... 首先考虑暴力做法,应该是设 f[i][j][x][y] 记录指定棋子和空格的位置,然后 bfs 转移; 然后发现,这些状态中有很多无用的,换句话说,就是仅当空格在指定棋子旁边时才有用,能
阅读全文
摘要:题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1443 首先要得到一个最短路树; 注意边权和最小,因为在最短路中,每个点的 dis 都是固定的,所以边权和最小... 边权和会不同是因为,虽然 dis 固定,但由于组成
阅读全文
摘要:题目:http://noi.ac/problem/31 好题啊! 题意很明白,对于有关最小生成树(MST)的题,一般是要模拟 Kruskal 过程了; 模拟 Kruskal,也就是把给出的 n-1 条边一条一条加进去,那么就要枚举每次连接了哪两个连通块(点集); 于是需要记录连通块情况,这样加一条边
阅读全文
摘要:题目:https://www.luogu.org/problemnew/show/P2296 第一次用 Emacs 对拍,写了半天; 注意那个 is 赋值的地方很容易错,千万别反复赋值; 一道水题写了一个下午,崩溃。 代码如下:
阅读全文
摘要:题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2069 首先,对于和 1 相连的点,一定是从某个点出发,回到另一个点; 所以需要枚举起点和终点,但做 n 遍 dijkstra 不太可行; 可以进行多起点最短路,一次知道了以一些点作为起点、另一
阅读全文
摘要:题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2252 又没能自己想出来... 一直在想如何从每个1开始广搜更新答案,再剪剪枝,什么遇到1就不走了... 然而实际上直接多源bfs,从所有1一起开始,因为只需要找到0碰到的第一个1即可; 这样搜
阅读全文
摘要:题目:https://www.luogu.org/problemnew/show/P3953 主要是看题解...还是觉得好难想啊... dfs DP,剩余容量的损耗是边权减去两点最短路差值...表示对于最短路来说多走了这么多... 还要注意该点能否到达 n 号点,不能就不走了(剪枝); %p 那个地
阅读全文
摘要:题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1050 没思路的话想想暴力就好了... 首先,比值最小就是确定最小值后最大值最小; 怎样确定最小值?其实就是暴枚; 然后从最小值往上加边,并查集维护连通性,当 s 和 t 连通时的边就是最小的最
阅读全文
摘要:题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4289 好巧妙的转化!感觉自己难以想出来... 参考了博客:https://blog.csdn.net/reverie_mjp/article/details/52134142 把边变成点,相互
阅读全文
摘要:题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1123 思路倒是有的,不就是个乘法原理吗,可是不会写...代码能力... 写了一堆麻麻烦烦乱七八糟的东西写不下去了,去看TJ... 原来是在 tarjan 里面就顺便算出来了啊!真是精妙!这就是
阅读全文
摘要:题目:http://www.joyoi.cn/problem/tyvj-2054 把点分成几个连通块,和为0的几个点放在一块,在块内跑最小生成树作为这个块的代价; 然后状压DP,组成全集的最小代价就是答案; 1A了好高兴! 代码如下:
阅读全文

浙公网安备 33010602011771号