
DFS
文章平均质量分 68
Crossing over
这个作者很懒,什么都没留下…
展开
-
PAT A1018 Public Bike Management(30)
题意N个车站和一个管理中心,给定终点,选取管理中心到终点的最短路径,若有多条最短路径,要根据一些奇怪的标准从中选取一条唯一的最短路径(首先最小take其次最小return)。注意这道题肯定先要用dijkstra,然后问题来了,take和return值不满足传递性!这就是说,给定终点 x 和到该点的最优路径 0~x(最短路径里按照标准选取的唯一),其子问题 (终点为 0~x 中间某点 y) 的最优路原创 2017-02-10 22:03:14 · 315 阅读 · 0 评论 -
HDU 4126 Genghis Khan the Conqueror
传送门这个题借鉴了别人思想自己写的,题目大意是,给定图,保证每两点之间最多有一条直接相连的边,先给出原始图,然后Q次更新,每次增加某条边的权值,每次更新独立,求出本次的mst值,最后求平均。 所以问题就是根据每次更新以及原始mst求最新mst。两种情况, - 更新边不是原始mst上的。所以还是原始mst的值。 - 更新边是原始mst上的。因为更新一定是增加,所以这时这条边可能有一条原始ms原创 2017-04-18 21:40:35 · 384 阅读 · 0 评论 -
HDU 3605 Escape
传送门有N个人,M个星球,有一个N*M的矩阵,表示某个人是否可以去某个星球。问你这些人能不能全安排到这些星球上?做过了之前的几道题,这道题明显就是网络流了,但是,这道题考了缩点/状态压缩,因为N取值上限太大了,每个人都建一个点会超内存的,考虑M的上限很小(10),对所有人而言,去星球的状态最多2^M = 1<<M种,所以每种状态建一个点就好了(每种状态代表一类人,这类人完全等价)。...原创 2019-03-21 23:17:29 · 186 阅读 · 0 评论 -
HDU 2883 kebab
传送门有N个顾客,每个顾客需要一些烤串,每个烤串的制作时间不同(一个顾客内是相同的),每个顾客有一个开始时间和截止时间,在小于等于截止时间的时候完成。这个老板可以最多同时烤M串,可以把一个串分为多个不连续的时间段来烤,甚至可以把一个串分为多个部分(根据时间划分)来同时烤(占用多个位置,子串的烧烤时间和分量成正比)。其实就是有N个任务,每个任务有ni*ti个单位,这些单位随便任意组合(上述那些奇...原创 2019-03-18 22:41:00 · 191 阅读 · 0 评论 -
HDU 2732 Leapin' Lizards
传送门这道题应用了网络流,主要考的是怎么转化为网络流求解,重点是怎么建图。题意是给你一个n*m网格,每个格子可能有一个柱子,也可能没柱子,每个柱子上有一个最大跳出次数,用完了这个柱子就废了,每个柱子上可能有一个蜥蜴(也可能没有,但只能最多存在一个(不仅初始是这样,过程中也要满足这一点)),蜥蜴的跳跃距离是d,蜥蜴只能从柱子跳到另一个柱子上,两个柱子的距离定义为abs(x1-x2)+abs(y1...原创 2019-03-14 21:06:17 · 189 阅读 · 0 评论 -
HDU 3572 Task Schedule
传送门作业调度,这道题还真没想到能用网络流。。。。乍一看跟背包问题差不多。有N个作业,M个机器,每个作业给你一个耗费时间(时间段)以及最早开始时间和最晚完成时间(这两个是时间点),单位是天。一个作业同时只能被一个机器做,一个机器同时也只能做一个作业,但是,可以只做一部分,之后可以切换别的机器做。一部分指的是整数天。画个图。把数据处理成上面这个图,然后按照最大流求解就ojbk了,看看最后的最...原创 2019-03-13 23:47:28 · 165 阅读 · 0 评论 -
HDU 2084 数塔
传送门数塔dp。和那种网格dp差不多,也可以有四种做法,不过数塔的终点有n个,如果要让dp[i][j]表示起点到当前点的子问题,最后还要枚举。所以这道题就让dp[i][j]表示当前点(第i行第j个)到终点(最后一行)的子问题的最优解。然后就有两种写法,递推的话只用一个数组就够了(因为访问的之前状态一定已经被计算过了),而递归的话需要一个标记(以判断这个子问题是否被计算过),所以要用两个数组。...原创 2019-04-18 19:41:35 · 114 阅读 · 0 评论 -
HDU 2571 命运
传送门类似数塔问题,其实就是一个网格,每个点都有个值,求从左上走到右下的最大和。从当前位置可到的位置都是在右下方的。和HDU 1978这种题区别不大。虽然那个题是求路径条数,这个题是求路径最大和。但相同之处在于都是这样的网格dp,且每次行走过程都是这样单向(离终点越来越近)且不重复(一条路径上不会有重复点,必然是简单路)的,都蕴含了记忆化搜索的思想(对重叠子问题不必反复处理)。总结一下这种题...原创 2019-04-18 01:31:12 · 172 阅读 · 0 评论 -
HDU 3768 Shopping
传送门dfs回溯搜索。(哈密顿回路)给一个无向图,给定起点,再给几个商店(最多10个),要求找一条从起点出发、经过所有商店、再回到起点的最短路。因为商店数量很少,肯定是搜索了。可以用dfs,也可以用状压dp?(不太懂,没试,像这个一样?)需要先最短路预处理一下,因为只会用到起点和这些商店之间的最短路,所以先把这些关键点的下标映射到一个数组,然后以每个关键点为源点来一遍最短路。然后就是写这...原创 2019-04-13 21:46:45 · 207 阅读 · 0 评论 -
HDU 1978 How many ways
传送门dfs记忆化搜索、动态规划。是中文题,但是题意没说清楚,反正把我恶心到了。你是真的牛批。两个地方没说清楚。实际上每到一条路径终点之后就清除身上携带的能量值(若没用完),然后再加上这个路径终点的能量值。若按我理解的那样,则每个点的状态要用三维数组表示,其中第三维表示在当前点含有e能量值到终点的路数。可知当e>=N-x+M-y时的状态都等价。这个题中说的总体路线是一条条路径组...原创 2019-04-11 21:07:49 · 431 阅读 · 1 评论 -
HDU 1142 A Walk Through the Forest
传送门最短路+记忆化搜索。一个无向图,问你从起点到终点有多少条这样的路,该路径包含的边a->b都满足至少存在一条b到终点的路比所有a到终点的路都要短。这道题中path指边,route指路径。这道题比较良心,说了权值都为正。首先这个条件等价于b到终点的最短路小于a到终点的最短路。那么先求所有点到终点的最短路,因为是无向图所以不用反向建边了,直接以终点为源点求最短路。接下来从起点开始df...原创 2019-04-11 00:40:29 · 221 阅读 · 0 评论 -
PAT A1004 Counting Leaves(30)
题意给定家族树(结点总数、非叶节点总数和上下层对应关系),求每层的叶节点数。注意输入数据后从根节点递归得到每个节点的层次。(因为某些测试用例不是严格按照树层次输入的,不这样搞会挂掉一些测试点)单词pedigree 血统,家谱hierarchy 层次fix 固定原创 2017-02-11 01:05:49 · 304 阅读 · 0 评论 -
HDU 3549 Flow Problem
传送门基础网络流,这次使用一下dinic算法,BFS+DFSBFS负责找一个流量可行(仅关注当前边)的层次图,DFS在层次图基础上找增广路,而边上流量的更新在DFS的回溯过程中负责。上述过程重复直到汇点(sink)在BFS层次遍历后不可达。DFS可以一次只找一条路(在外部循环调用DFS直到返回值为0);也可以一次找多条路,在DFS内部累加flow,下面代码使用后者。当前弧优化,每次BFS后...原创 2019-03-10 22:18:34 · 212 阅读 · 0 评论 -
HDU 2489 Minimal Ratio Tree
传送门这题不会。还以为有什么方法能直接搞出来最小的ratio以及那些点,结果就是枚举,不过就算是枚举我也写不出来啊~ 主要的思想就是dfs选择m个点,而且更重要的是 不是中途选够了m个点就怎么样怎么样,而是必须搞到最后一层,这样select的值才完备了,所以中间可以剪枝,比如如果选了m+1个点就可以直接return了,比如如果现在已选的加上接下来都选也达不到m也可以return了(这个没实现)。原创 2017-04-10 16:22:23 · 288 阅读 · 0 评论