模板
Cry_Kill
坚持自己的梦想
展开
-
HDU 5952 Counting Cliques(s元的完全子图)
题目地址 题意:给你一个n个点m条边的图,问你n个点中有多少个s元完全子图。 思路:就是暴力搜索每个点,看看会不会有s元完全子图。 团的概念: 团就是最大完全子图。 G 的完全子图U是G的团当且仅当U不包含在G 的更大的完全子图中,即U就是最大完全子图。 G 的最大团是指G中所含顶点数最多的团。建边技巧:因为如果是建无向边的话,搜索的时候就可能因为从不同起点出现团集合相同原创 2017-10-31 21:19:20 · 571 阅读 · 0 评论 -
HDU 3061 Battle(最大权闭合图)
题目地址这里写链接内容 题意:不用说明了吧,中文。 思路:一个很明显的最大权闭合图,建图方法也是经典的最大权闭合图的建图方法,感觉没有什么特色,看建图方法可以戳这里。有一个难懂的地方就是明明是 最后M行 每行2个数字 a,b,代表相应城池的编号。表示攻占b之后才可以攻占a。为什么是a->b建边,不应该是b->a建吗?你这样想,是不是当a攻占了的话是不是b肯定已经被攻占了,但是b被攻占了的话原创 2017-09-09 00:22:16 · 293 阅读 · 0 评论 -
HDU 3987 Harry Potter and the Forbidden Forest(最小割的最少割边数)
题目地址 题意:给你一个图,你希望0与n-1不能连通,你就需要删边了,每条边删除是需要代价的,问你在最少的删边代价下,删边个数最小是多少。 思路:有两种方法:1、你需要把每条边删除的代价加上一个很大的数,这个数要比边的代价大很多,然后跑一边最小割,求出的结果模上那个数就好了。(因为当这个数足够大的话,多一条边的代价就可以体现出来了,所以求最小割的时候就能直接求出最小割的最小割边了,因为当原本最原创 2017-08-26 01:04:51 · 596 阅读 · 0 评论 -
HDU 1824 Let's go home(2-SAT)
题目地址 题意:中文没什么好说的,就是有一点题意需要通过样例才知道,题目中的两名队员是可以包括队长的,只是当队长留下来的话,其他两个人可以留下也可以回家,并不是二选一一定要做什么,也可以全部留下,这是我之前没搞清楚的地方 思路:这道题让我更好的理解了2-SAT算法的建图以及解决方法,如果还不懂2-SAT的话可以看我另一篇博客:传送门,那里有资料和我对这个算法的一些理解。原来我是没有很好的理解建图原创 2017-09-17 11:32:42 · 369 阅读 · 0 评论 -
HDU 3062 Party(2-SAT模板)
题目地址 题意:中国人不需要解释中文吧,不会就是小学语文没学好,(* ̄rǒ ̄) 思路:这道题就是裸的2-SAT问题,我也用这道题来对这个题目进行理解的,推荐一篇PPT《由对称性解2-SAT问题》,我看到别人都是用这个入门的,并且这个是真的讲的好。但是大家的博客都是用这个博客给出的样例去讲的,我就结合这道题来谈谈我对这个算法的理解吧。原创 2017-09-17 09:22:35 · 385 阅读 · 0 评论 -
【转】ACM高精度模板
我学长的一篇蛮好的高精度模板,传送门 下面是正文: 在这里,我们约定,能用int表示的数据视为单精度,否则为高精度。所有函数的设计均采用带返回值的形式。 本文包含 1.高精度加法 2.高精度减法 3.高精度乘法 1)高精度乘高精度的朴素算法 2)高精度乘高精度FFT优化算法 3)高精度乘单精度 4.高精度除法 1)高精度除高精度 2)高精度除单精度 5.高精度取模 1)高转载 2017-08-30 17:18:44 · 650 阅读 · 4 评论 -
hdu3472 HS BDC (混合图的欧拉链路)
题目地址 题意:给你一些单词,这些单词有一部分是可以翻转的(1),然后问你能不能把这些单词连成一条链。 思路:这个一看就是问混合图中存不存在欧拉链路的问题,对于求欧拉链路和之前我们求欧拉回路有什么区别呢?其实没有多大的区别,我们把欧拉链路的起点终点连起来就不是一个欧拉回路了吗。所以大体和求欧拉回路没什么区别。如果混合图不连通,或者连通,但是入度或者出度为奇数的点多于2个,那么显然不会有欧拉路径。原创 2017-09-15 01:24:50 · 258 阅读 · 0 评论 -
HDU 3046 Pleasant sheep and big big wolf(SAP,Dinic模板)
题目地址 题意:狼要吃羊,1的位置是羊的位置,2的位置是狼的位置,0是你可以放栅栏的位置,如果羊被栅栏围到了则狼就吃不掉羊了。问要用的栅栏最少是多少? 思路:让狼与源点连,羊与汇点连,可以立栅栏的位置与周围连上一条容量为1的边,这样就转化为最小割的问题了。只要源点和汇点不连通了就隔离开来了。因为是模板题,我用了两种方法写。原创 2017-08-30 00:39:52 · 398 阅读 · 2 评论 -
HDU 2255 奔小康赚大钱(KM算法模板题)
题目地址 题意:中文。 思路:因为每个村民都有自己心仪的房子,然后村委会要赚最多的钱,所以这就是一个带权二分图的最佳匹配,解决这一问题的算法就是KM算法,这题就是直接套模板就好了。 推荐:一篇KM算法我觉得讲的蛮好的博客原创 2017-08-29 16:19:38 · 355 阅读 · 0 评论 -
HDU 3657 Game (最大独立点集(重要概念))
题目地址 题意:你要玩个游戏,你有一个n*m的棋盘,每个格子中都有价值,如果你选择了一个格子就加上那个价值,但是如果你要选相邻的两个格子就要减去2*(X&Y)的价值,你要从棋盘中选择一些格子,使得选出的格子总价值最大。 思路:和HDU1565方格取数(1)是一样的,只不过因为这个的相邻两点是可以连的要付出代价而已。并且有一些一定要取的点(后面会讲)。但是整体思路还是一样的。原创 2017-08-28 22:14:20 · 585 阅读 · 0 评论 -
HDU 1565 方格取数(1)(最大独立点集)
题目地址 题意:中文。 思路:我是实在想不懂这类题目为什么可以转化为网络流来写,于是我看了好多题解。然后发现因为相邻的两个点是不能同时选的,然后这样就划分成了两类点,用奇偶建点的方法,可以很明白的写出这个模型,因为相邻两点的横纵坐标加起来一定是一奇一偶的。然后就是求这个二分图的最大独立集,然而最大独立集=总权重-最小覆盖集。概念看这里。附带一些性质(转自这里): 独立集: 独立集是指图原创 2017-08-28 16:54:55 · 482 阅读 · 0 评论 -
最小割方格取数总结,及题目总结
今天我发现了最小割方格取数这类问题,我觉得有些不好理解,于是我在网上找到了一篇总结的文章,我觉得写得蛮好的,然后就参照那篇文章自己总结了一下,方便自己以后更好的复习这类的问题。原创 2017-08-28 23:22:34 · 514 阅读 · 0 评论 -
HDU 1956 Sightseeing tour(混合图欧拉回路)
题目地址 题意:有个城市的董事会要在这个城市建巴士观光旅游,为了让旅游的人可以看到这个城市的所有角落。那就要让这个城市的每条街道都被访问一次,并且最后要回到最初的起点。每个街道有单行道(1)和双行道(0)之分,观光车必须要遵守交通规则。问在这些条件下能不能建成这个观光旅游。 思路:就是一道裸的混合图求有没有欧拉回路的问题。所以我们来讲下混合图怎么来求欧拉路径的。原创 2017-09-14 14:17:19 · 350 阅读 · 0 评论 -
网络流,增广路,Edmonds_Karp 以及 Dinic 算法(HDU 1532)
这是我在复习网络流的时候看到的一篇蛮好的博客,也是别人转载的,原作者的地址已经打不开了。原创 2017-08-15 11:08:48 · 363 阅读 · 0 评论 -
HDU 3996 Gold Mine(最大权闭合图)
题目地址 题意:题意还是蛮复杂的,但是好好分析起来就好了,先告诉你有T组样例,然后每个样例里面有n个区域(n<=100),然后呢?每个区域里面都有m个金矿(m<=25)(其实我觉得直接看金矿就好了,标号就设为 i*26+j),然后告诉你每个金矿要花掉的钱以及能赚到的钱,以及与多少个金矿有关系,然后c行就是有关系金矿的区域号以及区域里面第几个金矿了(按之前的公式算就好了)。问最大的收益是多少?原创 2017-09-09 01:01:59 · 353 阅读 · 0 评论 -
51NOD 最长递增子序列(模板)
1134 最长递增子序列给出长度为N的数组,找出这个数组的最长递增子序列。(递增子序列是指,子序列的元素是递增的)例如:5 1 6 8 2 4 5 10,最长递增子序列是1 2 4 5 10。 Input第1行:1个数N,N为序列的长度(2 <= N <= 50000)第2 - N + 1行:每行1个数,对应序列的元素(-10^9 Output输出最长递增子序列的长度。原创 2017-06-03 09:04:06 · 446 阅读 · 0 评论 -
HDU 3870 Catch the Theves(对偶图的最小割转最短路)
题目地址 题意:小偷从左上角出发,要到达右下角,问警察至少拦截多长的路一定可以抓到小偷。(给的数num[i][j]的意思是(i,j)这点到(i+1,j)和(i,j+1)的距离) 思路:看到这题就想到用最小割,当左上角和右下角不连通的时候就可以抓到小偷了,但是用Dinic去写的话,就会发现复杂度太高了,然后上网百度发现了是对偶图的最小割转最短路的转发,可以看这个去理解,然后就是模板题了(建图方法看原创 2017-09-01 23:50:23 · 296 阅读 · 0 评论 -
Codeforces 862 B Mahmoud and Ehab and the bipartiteness(二分图染色)
题目地址 题意:给你n个点,n-1条边,他们构成了一个二分图,让你尽可能的加边,使得最后得到得图还是二分图。 思路:对二分图进行染色,,让他分为2个集合,然后我们对这两个集合里得每一条边得相互连接,这样得话最后的图还是二分图了。原创 2017-10-14 10:05:39 · 386 阅读 · 0 评论 -
Codeforces 861 D Polycarp's phone book(字典树模板)
题目地址 题意:给你n个电话号码,请你尽可能得缩短每一个电话号码,使得缩短后的每个字符串能代表该电话号码(就是缩短后的字符串不能是多个电话号码的子串) 思路:把所有的电话号码的后缀全部存入字典树然后我们通过标记这个子串出现过几次,最后通过搜索把所有标记为一的放入map中去比较,当长度更短或者原来没有出现的话就更新map。 附加:我对与更新后缀对同一电话号码的子串不需要重复加一的操作就是每次还要原创 2017-10-14 10:00:31 · 341 阅读 · 0 评论 -
HDU 6214 Smallest Minimum Cut(最小割的最少割边数)
题目地址 题意:给你应该网络图,然后告诉你一些边的流量,让你求出最少需要割去多少流量才能让S点和T点不连通,当有多最小割路径的时候,选择条数最小的一个。 思路:参考我原来的博客:传送门HDU3987,上面有这个的两种解法,但是第二种写法会超时,应该是我代码写丑了,或者是卡常了。原创 2017-09-17 23:26:44 · 615 阅读 · 0 评论 -
HDU 3663 Power Stations(Dancing_Links精确覆盖)
题目地址 题意:有n个城市,告诉你m条路,每个城市都有自己的发电厂,每个发电厂能给与该城市直接相连的城市供电,每个城市的发电厂都有自己的工作周期,我们只能在工作区间中选择一段工作区间来进行工作,(如1~5,不能选择1~2和4~5,只能选择工作区间内的一个连续区间,问能不能找到一个工作表,使得每天每个城市都有且仅有一所发电厂给该城市供电。原创 2017-09-24 09:29:48 · 276 阅读 · 0 评论 -
HDU 3656 Fire station(巧妙的二分+DLX重复覆盖)
题目地址 题意:给你n个城市,在这个n个城市中要修m个消防局,问在这个限制条件下使得每一个城市发生火灾所需要的最大救援长度最短,最短为多少。 思路:和HDU 2295 Radar一样,但是我们这里就不能直接二分枚举距离了,我看别人博客学到了一个巧妙的二分方法,因为要求最短,那么最短肯定是恰好是某个城市到消防局的距离,所有我们把城市与城市之间的距离离散出来,这样的话我们二分搜索下标,这样的话二分的原创 2017-10-01 20:48:20 · 726 阅读 · 0 评论 -
HDU 2295 Radar(二分+DLX重复覆盖)
题目地址 题意:有n个城市,m个可以装雷达的地方,你的资金最多只能装k台雷达,问在这个限制条件下雷达的最小覆盖半径为多少。 思路:二分枚举半径长度,然后通过这个限制条件去建立矩阵(行为该雷达能覆盖的地方,列为该地方能被多少个雷达覆盖),当这个m*n的矩阵建好以后跑一边DLX重复覆盖就好了,当需要删除的行数大于k时就增大半径长度,反之减小。原创 2017-10-01 12:01:56 · 359 阅读 · 0 评论 -
HDU 3715 Go Deeper(二分+2-SAT总结)
题目地址 题意:给你一个递归函数如下(转成C语言):void go(int dep, int n, int m) { if (dep < m && x[a[dep]] + x[b[dep]] != c[dep]) { go(dep + 1, n, m); }}问你个构造一个x数组,使得他的递归层数最多,最多为多少。原创 2017-09-21 19:04:12 · 397 阅读 · 0 评论 -
HDU 3909 Sudoku(数独转DLX精确覆盖)
题目地址 题意:给你一个n,然后给你一个n^2阶的数独,n分别有2,3,4这3种情况,然后你判断这个数独是不是有唯一的一个解,如果没有解的话输出”No Solution”,多个解的话就是输出”Multiple Solutions”,否则判断这个唯一解是不是最小解(最小解就是把任何一个给定的数变为不确定的话就会有多组解) 思路:我们通过map去映射字符与数字的关系,然后我们在DLX中加一个变量记录原创 2017-10-08 23:40:50 · 464 阅读 · 0 评论 -
HDU 2780 Su-Su-Sudoku(数独用DLX精确覆盖求解)
题目地址 题意:给你一个数独残图,问你是不是能求出完整的图,完整的数独是什么样子的(唯一)。 思路:数独的限制条件就是4个,分别是位置限制:每一格有且仅有一个数列限制:每一列中每个数仅出现一次行限制:每一行中每个数仅出现一次区域限制:每个区域每个数仅出现一次所以我们创建的矩阵要满足这些条件,所以我们划分出行的区间来表示这些限制条件1-81行表示的是位置限制82-162行表示的是列限原创 2017-10-03 00:27:21 · 500 阅读 · 0 评论 -
HDU 3335 Divisibility(DLX求最多重复覆盖)
题目地址 题意:告诉你n个数,问你最多可以得到多少个数,当你选择了这个数的时候,可以与他构成整除关系的数就不能选了。 思路:我们构造一个矩阵,我们枚举每对数,当这两个数满足整除关系的时候就让第i行第j列和第j行第i列的值置为1,这样的话就表示一个选了就不能选了。原创 2017-09-29 00:28:30 · 441 阅读 · 0 评论 -
HDU 3414 Tour Route(竞赛图的哈密顿回路)
题目地址 题意:给出一个n阶的竞赛图,找出一个哈密顿回路,如果有输出路径,否则输出-1。 思路:按照竞赛图的性质竞赛图一定是存在哈密顿路径的,所以我们遍历每个点为起点的哈密顿路径,再判断是不是首尾相连,如果是直接输出路径就好了。 补充:1、竞赛图:就是一个把所有的边从有向边转化为无向边,之后这个图是完全图。2、哈密顿路径:通过图中的每一个节点一次并且仅一次的路径。原创 2017-09-12 09:26:23 · 750 阅读 · 0 评论 -
HDU 3498 whosyourdaddy(Dancing_Links重复覆盖)
题目地址 题意:给你n个城市,m条道路,每次摧毁一个城市会附带把与它直接连接的城市的摧毁,一个城市可以重复摧毁(如果不能重复就是精确覆盖了),问你最少摧毁多少个城市能把所有城市摧毁。 思路:我们可以构造一个n*n,每列代表这个城市有没有摧毁,每行代表这个城市摧毁了会导致哪些城市摧毁。然后我们跑一边DLX重复覆盖就好了。 重复覆盖:因为在行的集合中精确覆盖只能每一列选一个1所以在选择的时候我们可原创 2017-09-26 09:23:16 · 289 阅读 · 0 评论 -
HDU 6201 transaction transaction transaction(SPFA模板)
题目地址 题意:每个城市有不同的书的价钱,你要从一个城市进书,到另一个城市卖书,每两个有路相邻的城市需要打的士,价格是每公里一块钱,问你最多能赚多少钱。(只能买一本去卖) 思路:用一个超级源点连一个单向边到每个城市,代表的买书的代价,然后每条路建双向边,代价是车费,然后我们从超级源点跑一边最短路,这样我们就得到了到每个城市卖书的最小代价,然后我们再与当地的书价相减,求出最大的利益。原创 2017-09-11 13:47:54 · 198 阅读 · 0 评论 -
HDU 2894 DeBruijin (欧拉回路)
题意:中文不解释思路:第一个输出无疑就是2^n,然后复杂的就是输出序列,下图就是一个n为3的时候的情况,因为每次都要旋转一位,我们可以把这个抽象成一个节点个数为2^(n-1)的图,对应2^(n-1)个n-1位二进制数,当前的节点代表的是二进制数字为k,他要连向代表数(k<<1)&(1<<n-1)的节点,和代表数(k<<1)&(1<<n-1)+1的节点,这样的话就把整个图变成了一个欧拉图,然后从0号点开始dfs寻找一原创 2017-09-13 17:06:47 · 281 阅读 · 0 评论 -
HDU 1878 欧拉回路(概念)
题目地址 题意:中文 思路:裸的欧拉回路,把下面的概念看懂就好了。然后我们用并查集判断一下是不是连通的就好了。 欧拉通路::图连通,并且通过图中每条边且只通过一次。 欧拉回路:图连通,并且通过图中每条边且只通过一次。 无向图是否具有欧拉通路或回路的判定: 欧拉通路:图连通,并且图中只有0个或2个度为奇数的节点 欧拉回路:图连通,并且图中所有节点度均为偶数 有向图原创 2017-09-13 00:52:51 · 334 阅读 · 0 评论 -
HDU 3667 Transportation(建边技巧+最小费用最大流)
题目地址 题意:你要从城市1运送K单位物品到城市n,给你m条有向边,每条边都有其容量c,并且每条边产生的费用是a*x^2,其中x是整个网络在这条边上的流量,a是每条边给出的系数。求能不能运K个单位,如果可以求出最小花费,不能则输出-1。 思路:题目已经明确的告诉我们是一道最小费用最大流的题目了,但是因为费用是根据流量来算的,所以和以往的题目就不一样了,于是我在网上找到了一种特别神奇的建边方式是应原创 2017-08-24 00:56:43 · 297 阅读 · 0 评论 -
51NOD 1264 两线段相交模板
1264 线段相交给出平面上两条线段的两个端点,判断这两条线段是否相交(有一个公共点或有部分重合认为相交)。 如果相交,输出"Yes",否则输出"No"。Input第1行:一个数T,表示输入的测试数量(1 <= T <= 1000)第2 - T + 1行:每行8个数,x1,y1,x2,y2,x3,y3,x4,y4。(-10^8 <= xi, yi <= 10^8)(直线1的两原创 2017-06-03 09:03:54 · 228 阅读 · 0 评论 -
HDU 2586 How far away?(lca模板)
How far away ?Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 14028 Accepted Submission(s): 5295Problem DescriptionThere are n houses in原创 2017-06-03 09:04:13 · 225 阅读 · 0 评论 -
HDU 4081 次小生成树模板
Qin Shi Huang's National Road SystemTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7169 Accepted Submission(s): 2537Problem DescriptionDur原创 2017-06-03 09:03:36 · 316 阅读 · 0 评论 -
HDU 1269 迷宫城堡(强连通模板题)
迷宫城堡Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 14100 Accepted Submission(s): 6304Problem Description为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间原创 2017-06-03 09:05:42 · 317 阅读 · 0 评论 -
HDU 3594 Cactus(仙人掌图模板)
CactusTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 1934 Accepted Submission(s): 891Problem Description1. It is a Strongly Connected gra原创 2017-06-03 09:05:46 · 387 阅读 · 0 评论 -
51NOD 1212 最小生成树模板
1212 无向图最小生成树N个点M条边的无向连通图,每条边有一个权值,求该图的最小生成树。Input第1行:2个数N,M中间用空格分隔,N为点的数量,M为边的数量。(2 <= N <= 1000, 1 <= M <= 50000)第2 - M + 1行:每行3个数S E W,分别表示M条边的2个顶点及权值。(1 Output输出最小生成树的所有边的权值之和。Input示例9 1原创 2017-06-03 09:03:57 · 275 阅读 · 0 评论 -
HDU 3311 Dig The Wells(spfa模板)
Dig The WellsTime Limit: 6000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 1233 Accepted Submission(s): 553Problem DescriptionYou may all know the famo原创 2017-06-03 09:04:54 · 282 阅读 · 0 评论