随笔分类 -  DFS

摘要:传送门 分析 先进行缩点 之后从终点倒着跑 对于一组边如果有一个点不能到达则这组边直接废掉 最后看只用没废掉的边能不能从起点走到终点 代码 阅读全文
posted @ 2019-03-27 11:18 水题收割者 阅读(113) 评论(0) 推荐(0)
摘要:传送门 分析 首先我们发现要让答案最小,或运算一定是没有用的 我们还可以发现a^b = a&(~b) 所以异或运算也没有用 于是我们只考虑否和与 我们还会得到一个性质就是没增加一个数一定会让答案的1的个数至少减少一半 因为我们会让答案与上a和(~a)中是的答案的0的数量增加最多的一个 所以最坏增加剩 阅读全文
posted @ 2019-03-13 23:16 水题收割者 阅读(109) 评论(0) 推荐(0)
摘要:传送门 分析 咕咕咕 坑点就是没有本质相同的字符串且x<=y 代码 阅读全文
posted @ 2019-02-23 22:04 水题收割者 阅读(217) 评论(0) 推荐(0)
摘要:传送门 分析 有中文题面所以就不写题目大意了 我们先建出回文树 然后根据fail信息建出一棵树 从根向下dfs,中间记录每一个len出现在哪个节点即可 代码 阅读全文
posted @ 2019-02-20 14:20 水题收割者 阅读(243) 评论(0) 推荐(0)
摘要:传送门 分析 首先先推荐一篇关于莫队的博客 这个题我们不难看出就是树上带修莫队 一直在犯sb错误,调了好长时间嘤嘤嘤 代码 阅读全文
posted @ 2019-02-17 13:26 水题收割者 阅读(254) 评论(0) 推荐(0)
摘要:传送门 题目大意 给出一棵无根树,每个节点有一个权值,现在要让dfs序的前k个结点的最小值最大,求出这个值。分析 首先可以对这个值v进行二分然后01分数规划现在问题转化为求出一个dfs序,使得dfs序中的至少有k个1,这一步可以用树形dp来做。用dp[u]表示从节点u开始在子树中进行dfs最多可以经 阅读全文
posted @ 2019-02-11 11:26 水题收割者 阅读(228) 评论(0) 推荐(0)
摘要:传送门 分析 见ptx大爷博客 代码 阅读全文
posted @ 2018-12-05 22:33 水题收割者 阅读(152) 评论(0) 推荐(0)
摘要:传送门 题目大意 有n个城市,每个城市有一个传送点,都可以传送到唯一的另外一个城市,保证从任何位置出发经过若干次传送之后能够到达1号城市。现在希望修改一些点的目的地,使得从任何一点出发在传送K次之后恰好都能到达1号城市,求最少要改变目的地的城市的数量。 分析 比较典型的贪心 从下往上搜索,每当深度为 阅读全文
posted @ 2018-12-02 10:31 水题收割者 阅读(230) 评论(0) 推荐(0)
摘要:传送门 分析 见ptx大爷的博客 代码 阅读全文
posted @ 2018-11-24 13:18 水题收割者 阅读(316) 评论(0) 推荐(0)
摘要:传送门 分析 在经过若干次操作之后一定会产生一堆环 而我们又发现从一个点到另一个点实际可以经过所有环 于是问题就转换成了$k_1s_1 + k_2s_2 + ... + len = t$ 其中$s_i$为每个环的长度,$len$为两点间距离 于是每次gcd求一下就行了 注意两点间距离不用求LCA,用 阅读全文
posted @ 2018-11-03 20:14 水题收割者 阅读(143) 评论(0) 推荐(0)
摘要:传送门 分析 先用AC自动机将所有字符串存起来,之后我们从根节点跑一遍dfs 判断时我们只需要判断这个环有没有任意一个字符串的结尾就可以判断是否安全了 注意一个节点的信息需要累加上它fail指针所指位置的信息 代码 阅读全文
posted @ 2018-11-03 19:52 水题收割者 阅读(248) 评论(0) 推荐(0)
摘要:传送门 分析 考场上傻了,写了个树剖还莫名weila...... 实际就是按顺序考虑每个点,然后从他往上找,一边走一边将走过的边染色,如果走到以前染过色的边就停下。对于每一个a[i]的答案就是之前走过的所有边的数量*2-它自己的深度。 代码 阅读全文
posted @ 2018-09-25 14:03 水题收割者 阅读(112) 评论(0) 推荐(0)
摘要:传送门 题目大意 给出由1~n组成的序列,每次可将一个区间翻转。问如何从1~n的递增序列变成给出的序列,输出操作次数以及每次操作的区间。最多翻转3次,保证有解,输出任意方案即可。 分析 我们对于每一次翻转只考虑枚举所有可能的点,即我们找出每一段连续区间的两个端点,然后枚举选取这些端点中的哪两个,之后 阅读全文
posted @ 2018-08-09 19:11 水题收割者 阅读(178) 评论(0) 推荐(0)
摘要:传送门 题目大意 给定n和一个字符串,求一个新字符串使得这个字符串不存在长度大于等于n的回文子串且在字典序大于原串的情况下最小。 分析 我们知道如果有一个长度为n+2的回文串,那它一定由一个长度为n的回文串构成,所以我们只寻找长度为n和n+1的回文串。我们枚举每个位置的字母使最终字符串满足条件即可, 阅读全文
posted @ 2018-08-03 14:16 水题收割者 阅读(262) 评论(0) 推荐(0)
摘要:传送门 题目大意 国家有N个城市,任意城市可以到达任意城市,是一棵树。国王要给这些城市分省份。每个省份最少M个城市,最多3M个城市。每个省有一个首府,首府不一定是这个省的城市,只是首府到这个省各个城市只能经过这个省的城市。给出N和M,求分配方案,输出有多少个省,各个城市属于哪个省,每个省的首府是哪个 阅读全文
posted @ 2018-07-27 15:58 水题收割者 阅读(218) 评论(0) 推荐(0)
摘要:传送门 分析 对于这道题,我们首先思考一个贪心策略,即对于所有我们要打败的厨师我们肯定可以先打败需使用帮助次数少的厨师再打败需使用帮助次数多的厨师 ,因为这样可以使得能支付得起帮助费用的可能性尽可能的大。在确定顺序之后我们便可以进行dfs啦,只需要在搜索过程中加一些可行性剪枝和最优性剪枝就行了。 代 阅读全文
posted @ 2018-07-25 14:37 水题收割者 阅读(613) 评论(0) 推荐(0)
摘要:传送门 分析 首先我们不难想到1e4^5的暴力枚举,但显然这是不行的,于是我们考虑对于每一张海报肯定有一种最优情况使得它至少有一条边要么靠着板子的边要么靠着之前的某一张海报的边,这样我们便可以将复杂度优化了很多。我们再考虑将每一种情况进行哈希,这样便可以避免了如图一的情况(矩形中的数字是指这个矩形是 阅读全文
posted @ 2018-07-24 15:27 水题收割者 阅读(387) 评论(3) 推荐(0)
摘要:传送门 题目大意 给你一张图,求这张图的汉密尔顿回路。 分析 因为m≤n+20,所以如果存在回路一定是在一个环中加入了至多20条边。我们先考虑dfs,但我们发现如果出现图1这种情况就会是复杂度爆炸 图1图2 我们发现如果有很多这样的三角形程序就会爆炸。所以我们考虑优化。我们发现对于所有出度为1的点我 阅读全文
posted @ 2018-07-23 13:55 水题收割者 阅读(508) 评论(0) 推荐(0)
摘要:传送门 题目 Input 输入一行,三个整数,n, m, k 输入一行,三个整数,n, m, k Output 输出一个数,表示最小不满意度。 分析 我们要知道一个性质,即将一个符合条件的房间切成两个一定可以满足条件。所以我们用一个函数表示一个房间的长、宽以及它的四条边分别是否在最边下。所以我们枚举 阅读全文
posted @ 2018-06-19 13:44 水题收割者 阅读(331) 评论(0) 推荐(0)
摘要:传送门 题目 一条单向的铁路线上,依次有编号为 1,2,…,n的 n 个火车站。每个火车站都有一个级别,最低为 1 级。现有若干趟车次在这条线路上行驶,每一趟都满足如下要求: 如果这趟车次停靠了火车站 x ,则始发站、终点站之间所有级别大于等于火车站 x的都必须停靠。(注意:起始站和终点站自然也算作 阅读全文
posted @ 2018-06-03 14:52 水题收割者 阅读(678) 评论(0) 推荐(0)