图论
inklutcuah
这个作者很懒,什么都没留下…
展开
-
【jzoj4597】【现世斩】【平衡树】【set】
题目大意给出有权无向连通图,有一次机会使与一个点相连的边的权变为一,求最短路。题解显然的想法是学习gdoi2016的一题,分层单源最短路,设f[i][0,2],表示没有用机会,在前驱用机会,没有机会,dijset优化就可以了。还有一种方法,只有一次机会,影响很小,起点终点都做一次最短路,枚举在哪里用,扫一下边,每条边只被扫2次,复杂度有保证。code#include<set>#include<cm原创 2016-07-12 12:03:32 · 282 阅读 · 0 评论 -
【jzoj4784】【Map】【强连通分量】
题目大意给出一个图,一些询问加入一条边后增加多少对双连通点对(u,v)(v,u)算两对。解题思路tarjan后建树,答案即为(u,v)路径上size和的平方减去平方和,倍增即可。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LF double#defi原创 2016-09-23 20:49:58 · 372 阅读 · 0 评论 -
【HDU 3072】【通讯】【强连通分量】
题目大意给出一幅有向图,强连通分量内传递信息不用花费,其余沿有向边传递有花费,求最少的花费使1可以传递到所有点。解题思路首先tarjan缩点,得出一个dag。显然一个店的信息又花费最少的边传递过来,记录每一个点的前驱,统计答案即可。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorit原创 2016-08-16 22:17:19 · 264 阅读 · 0 评论 -
【UOJ 67】【种树】【强连通分量】
题目大意给出一幅图,求有多少删点(包括与其相连的边)方案,使原图变成树。解题思路可以发现被删点的度数一定且不能是割点。用tarjan求割点,有多于一个儿子的根或u有边(u,v)dfn[u]<=low[v]。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define L原创 2016-08-16 21:54:12 · 297 阅读 · 0 评论 -
【bzoj1051】【HAOI2006】【受欢迎的牛】【强连通分量】
题目大意给出一幅有向图,求所有点都能到达它的点的个数。题解tarjan缩点,看是否只有一个连通块,输出出度为零的连通块的大小。其实我们不一定要真的缩点,求完强连通分量后发现这个强连通分量有出边就可以排除,最后看可行数是否大于一,并同时记录连通块的大小,判断后输出即可。code#include<set>#include<cmath>#include<cstdio>#include<cstring原创 2016-07-04 08:22:24 · 409 阅读 · 0 评论 -
【jzoj3891】【钻石交易】【动态规划】【最短路】
题目大意解题思路枚举钻石买卖情况,通过spfa更新当前情况停留在所有点的答案,再考虑再停留点卖钻石的情况。code#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LF double#define LL long long#define min(a,b) ((a<b)?a:b)#defi原创 2017-01-20 16:38:33 · 319 阅读 · 0 评论 -
【jzoj4964】【Rhyme】【字符串哈希】【拓扑排序】
题目大意由于多次交换邮票没有满足所有人的需求,小Z被赶出了集邮部。无处可去的小Z决定加入音乐部,为了让音乐部的人注意到自己的才华,小Z想写一首曲子。为了让自己的曲子更好听,小Z找到了一些好听曲子作为模板。曲谱可以表示成只包含小写字母的字符串,小Z希望自己最终的曲谱中任意一个长度为K的子串都是一个模板的子串。现在小Z想知道自己的曲谱最长可以是多长,如果可以无限长的话请输出INF。解题思路将k-1的串哈原创 2017-01-27 15:37:07 · 457 阅读 · 0 评论 -
【jzoj5060】【GDOI2017第二轮模拟day1】【公路建设】【数据结构】
题目大意在Byteland一共有n 个城市,编号依次为1 到n,它们之间计划修建m条双向道路,其中修建第i 条道路的费用为ci。Byteasar作为Byteland 公路建设项目的总工程师,他决定选定一个区间[l, r],仅使用编号在该区间内的道路。他希望选择一些道路去修建,使得连通块的个数尽量少,同时,他不喜欢修建多余的道路,因此每个连通块都可以看成一棵树的结构。为了选出最佳的区间,Byteasa原创 2017-04-16 08:14:57 · 876 阅读 · 0 评论 -
【jzoj5088】【GDOI2017第四轮模拟day2】【最小边权和 】【图论】
题目大意有一张n个点m条边的有向图,每条边有一个互不相同的边权w,有q个询问,要求你从点a经过不超过c条边到点b,要求经过的边权递增并和尽量小,求出最小的边权和,如果没有合法方案则输出-1。解题思路设f[i][j][k]表示i到j走k步的花费,从小到大加入边,发现有影响的状态j一定为边的终点,暴力更新即可。code#include<cstdio>#include<algorithm>#defin原创 2017-04-25 15:07:57 · 528 阅读 · 0 评论 -
【bzoj1003】【ZJOI2006】【物流运输】【最短路】【动态规划】
题目大意给出一幅无向图(点数<=20),在n天内,有某些点在某段时间不能经过,求n天最短路之和,每相邻两天所走路不同将付出额外代价k,求最小代价。题解用单最短路算法求出任意一段时间用同样路径的花费。f[i]表示1到i天的花费,f[j]=min{f[i]+cost[i+1][j]*(j-i)+k}(j>i)。原创 2016-06-28 16:04:17 · 489 阅读 · 0 评论 -
【Codeforces666B】【World Tour】【最短路】
题目大意给出一幅有向图,求出四个不同的点,两点之间走最短路,用最长的路走完四个点。解题思路跑n遍单源最短路,保存每个点最远的三个前驱,最远的三个后继。枚举中间两个点,再枚举它们的前驱和后继,判一下重,取最优答案。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#defin原创 2016-07-20 21:08:37 · 370 阅读 · 0 评论 -
【bzoj1202】【HNOI2005】【狡猾的商人】【最短路】
题目大意序列中有一些限制,是否有那么一个序列满足所有限制。解题思路把限制看成两点间的距离,跑floyd,看是否所有边都是最短路。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LL long long#define fo(i,j,k) for(int i原创 2016-08-18 08:10:13 · 416 阅读 · 0 评论 -
【jzoj4771】【爬山】【人工栈】【图论】【强连通分量】
题目大意给出一幅有向图每个点有价值,要从起点走到一个给定的点集中的一个点才能停止,求最大价值,重复经过没有价值。解题思路tarjan后按拓扑序dp即可,坑的是点可能很多要打人工栈。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LF double#def原创 2016-09-23 22:14:56 · 288 阅读 · 0 评论 -
【51nod1076】【2条不相交的路径】【图论】【边双连通分量】
题目大意给出一个无向图G的顶点V和边E。进行Q次查询,查询从G的某个顶点V[s]到另一个顶点V[t],是否存在2条不相交的路径。(两条路径不经过相同的边)解题思路求边双连通分量,在同一个分量中的点输出yes,否则输出no。code#include<cmath>#include<cstdio>#include<algorithm>#define LL long long#define min(原创 2016-11-30 17:23:36 · 1189 阅读 · 0 评论 -
【poj1201】【poj2983】【差分约束系统】
poj1201题目大意求一个长度为n的01序列,满足一些条件,第i格到第j格的和不小于x。解题思路设s[i]为第1格到第i格的和,显然有三个约束:1.s[i+1]-s[i]<=1;2.s[i+1]-s[i]>=0;3.s[j]-s[i-1]>=x;即1.s[i+1]<=s[i]+1;2.s[i]<=s[i+1];3.s[i-1]<=s[j]-x;我们发现可以将s[i]看作是n到i的距离,上面的三条式原创 2016-07-31 20:48:27 · 439 阅读 · 0 评论 -
【jzoj4629】【修路】【最小生成树】
题目大意有一些点和一些边,修建一条边有花费,但可以是连接的两个点有收益,花费远大于收益,求最小花费使图连通。解题思路显然每条边的花费(计算了收益的影响)是一定的,可以直接最小生成树。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LL long long原创 2016-08-02 09:32:04 · 434 阅读 · 0 评论 -
【Codeforces 609E】【Stree】【最小生成树】
题目大意给出n个点,m条有权边,现对于每一条边,你需要回答出包含这条边的最小生成树的总边权值。题解一个显然的结论,无论怎么样,生成树与最小生成树不同的边最多为一条。求出最小生成树,枚举加入哪条边,用倍增算法求出所加边在树上路径边权的最大值,更改答案即可。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#incl原创 2016-07-12 15:24:27 · 541 阅读 · 0 评论 -
【jzoj4899】【雪之国度】【最小生成树】【并查集按秩合并】
题目大意给出一棵带点权的图,边权为点权之差的绝对值,询问两点之间两条不相交的路径,权值最大的权值是多少。解题思路先搞出最小生成树,再从小到大添加非树边,每添加一条就会形成一个边双连通分量,双连通分量里两两的答案就是添加边的价值(如果之前没连通),那么我们就可以用并查集把这个双连通分量并在一起,但是我们不路径压缩,这样可以让我们知道两个点最早什么时候连通(查看路径上的边最后加入的是哪条),这样就可以求原创 2016-12-04 11:47:56 · 369 阅读 · 0 评论 -
【jzoj4893】【过河】【最短路】
题目大意解题思路删掉半径小费用大的盘,盘就变成半径费用单调。以第i个柱,j种盘为点,枚举另一个点,利用单调性找出最小相交的盘子连边,每个柱小盘子向大盘子连边,边权为差值,再跑最短路就可以了。code#include<cmath>#include<cstdio>#include<algorithm>#define LL long long#define min(x,y) ((x<y)?x:y)原创 2016-11-14 21:57:24 · 642 阅读 · 1 评论 -
【jzoj4878】【时空传送】【最短路】
题目大意给出一个有向无环图,求删除一个点是最长路最小,求删除那个点和删除后的最长路。解题思路先求出一个点往前往后的最长路,按拓扑序枚举点用数据结构维护最长路,先删除往后的最长路和经过入边的最长路,统计答案,然后加入到前面的最长路和经过出边的最长路。能这样做是因为是一个有向无环图按拓扑序做,删除当前点后面的路显然没有贡献,不经过当前点的路一定已经加入,过了这个点显然不会再影响,所以可以放心加入,只要处原创 2016-11-08 21:26:35 · 321 阅读 · 0 评论 -
【jzoj4855】【荷花池塘】【最短路】
题目大意于大夫建造了一个美丽的池塘,用来让自己愉快的玩耍。这个长方形的池子被分割成了M 行和N 列的正方形格子。池塘中有些地方是可以跳上的荷叶,有些地方是不能放置荷叶也不能跳上的岩石,其他地方是池水(当然于大夫也是不能游泳的)。于大夫十分有趣,他在池塘跳跃的方式和象棋中的马一样可以向八个方向走日字形,而且于大夫只能跳上荷叶。于大夫每天从一个给定的有荷叶的地方出发,试图到达另一个给定的有荷叶的地方。但原创 2016-11-03 15:24:50 · 428 阅读 · 0 评论 -
【jzoj5305】【NOIP2017提高A组模拟8.18】【C】
descriptionsolutiontarjan缩环,一个环贡献2^1,跑lca即可。code#include<set>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#define LL long long#define fo(i,j,k) for(int i=j;i<=k;i++)#define原创 2017-08-18 11:40:28 · 325 阅读 · 0 评论