
图论
ttoobne
for the times they are a-changin'
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
洛谷 P2765 魔术球问题 (网络流 + 思维)
题目链接题意:给你 n 根柱子,需要往上放小球,小球的编号从 1 开始(1,2,3 ...),要使得每两个相邻的球之和为平方数(4, 9, 16 ...),问最多可以放多少个小球。题解:从 1 开始,一个一个地加入小球,每个小球分为两个点,一个点由源点流向它,容量为 1 ,另一个点由它流向汇点,容量也为 1 。那么每次加入一个点,如果能够和之前加入的数构成平方数,则将这个数的第一个...原创 2019-04-27 13:49:37 · 2681 阅读 · 0 评论 -
Codeforces Gym - 101808K(倍增LCA最近公共祖先)
题目链接题意:给 n 个点,n 条边(3 <= n <= 100000),q 次询问,每次求 u 到 v 之间的最短路。没有重边和自环。题解:显然 O(n2logn) 是会超时的。由于只给了n条边,那么去掉一条边就是一棵树了。这时可以用LCA求解。我看这位大佬的代码学的。用并查集即可将成环的一条边从图中除去。之后的每次查询只需要判断经过这条边和不经过这条边哪个更小...原创 2019-04-18 14:46:08 · 308 阅读 · 0 评论 -
洛谷P1726 上白泽慧音 (强连通分量 Korasaju算法)
题目链接首先建图时多建一个反向边的图。vector<int> G[MAXN], rG[MAXN];算法的核心就是跑两遍 dfs:第一遍 dfs 求出从一个点开始遍历图回溯时所得到的后序序列(必须是后序,试过不是后序就会错。至于为什么,能力不足实在是研究了好久没研究出来,而且网上的博客也只是讲了要求后序而没有讲为什么)。第二遍对反向边生成的图 dfs ,从记录的后序...原创 2019-03-28 20:17:03 · 365 阅读 · 0 评论 -
洛谷P1113 杂务 (拓扑排序求最长路)
题目链接拓扑排序:首先将图中入度为 0 的点压入队列中,每次从队列中 pop 出一个点并将该点所连接的点入度都减一,若入度减到 0 则压入队列,直到队列为空,那么将每一次 pop 出的点记录下来就是该图的拓扑排序。如果要求字典序最小将队列改为优先队列即可。求最长路:动态规划 设当前队列中 pop 出的点为 u ,与 u 连接的点 v ,那么 dis[v] = max(dis[v], dis...原创 2019-03-25 18:06:57 · 648 阅读 · 0 评论 -
CCF计算机职业资格认证考试 201703-4 地铁修建 (BFS)
CCF前夕和实验室的沙雕小伙伴自发进行了一场沙雕比赛,先把答案写在txt文本里然后统一交,结果拿了300分,第三道题大模拟愣是一分没拿到。。。第四道一开始看觉得最小生成树没法做(后来看网上题解好多最小生成树过了的),然后就想到了BFS,每次将当前最小权值的边压入优先队列,途中记录一下最大的边,直到走到终点。存图就是常见的vector里放pair。网上好象没看到我这种写法的,都是最小生成树或者最...原创 2019-03-16 10:51:45 · 250 阅读 · 0 评论 -
POJ-1149 PIGS (网络流巧妙建图)
题目链接题意:有M个猪圈,每个猪圈里初始时有若干头猪。一开始所有猪圈都是关闭的。依次来了N个顾客,每个顾客分别会打开指定的几个猪圈,从中买若干头猪。每个顾客分别都有他能够买的数量的上限。每个顾客走后,他打开的那些猪圈中的猪,都可以被任意地调换到其它开着的猪圈里,然后所有猪圈重新关上。问总共最多能卖出多少头猪。(1 <= N <= 100, 1 <= M <= 100...原创 2019-04-27 14:01:49 · 319 阅读 · 0 评论 -
HDU6705 CCPC网络赛 path
题目链接题解:直接优先队列 bfs 会因为边数太多而 MLE,所以考虑一下减少放入队列的边。首先将每个点边权最小的出边加入优先队列,然后 bfs 时每 pop 出一条边就将出点是这条边的点的下一条出边压入队列,同时将连接这条边的最短的边也压入队列进行 bfs 即可。代码:#include <bits/stdc++.h>using namespace std;typede...原创 2019-08-24 14:11:06 · 337 阅读 · 0 评论 -
hdu 5521 (虚点?优化建图最短路)
题目链接题解:由于图中一个区块就是一个完全图,那么最坏的情况下有O(n2)O(n^2)O(n2)条边!但是,每个完全图的边权值都相同,那么可以将一个完全图的O(n2)O(n^2)O(n2)边巧妙地减为O(n)O(n)O(n)条!具体的,在每个完全图中间可以新加一个虚点,将通往虚点的边权值设为 0 ,将虚点的出边设置为原来完全图中各边的权值,那么就可以在减少边的同时保证这个完全图中每个点到另...原创 2019-08-20 19:54:49 · 363 阅读 · 0 评论 -
CodeForces - 786B (线段树?优化建图最短路)
题目链接题解:这道题太神仙了!由于有整个区间指向点的边和点指向一整个区间的边,所以边数它爆炸了。那么怎么样可以将边数减下来呢?这里以一个点连向一个区间的点为例子,我们可以建立一颗线段树,每个点代表一个区间,每个区间连一条边到它的各个子区间,边权为 0 ,然后将叶子节点连向各个原始的节点。那么要增加一个点连向一个区间的边就变成了这个点连向这个区间所包含的线段树中的节点即可。同样,增加一个区...原创 2019-08-21 15:25:08 · 268 阅读 · 0 评论