
dfs
文章平均质量分 83
深度优先搜索
ez_lcw
这个作者很懒,什么都没留下…
展开
-
【XSY4182】下一个(next)(欧拉回路,构造)
题面下一个(next)题解我们可以这么转化问题:给每一条边定向,使得每一个点的出度至少为 222。证明新问题是原问题的充分条件:定好向后,我们先给每个点随便选一条出边,显然这些边形成若干连通块,且每个连通块点数不大于边数(都是基环树),且每个点都被恰好覆盖一次。然后我们把这些边删去,让剩下的边形成若干连通块,由新问题构造条件可知现在每个点肯定至少有一条出边被选上,于是能保证这些连通块中每个连通块点数不大于边数(都是基环树),且每个点都恰好又被恰好覆盖一次。如何找呢,每个点度数至少为 444 是一个原创 2021-09-14 14:30:14 · 144 阅读 · 0 评论 -
【洛谷P7816 】【Stoi2032】以父之名
在洛谷题解中看到了两种做法。法一:与zjr巨佬说的类似,我们先能观察出这个图的几个性质:若只保留边权为 111 的边,那么所有点的度数都是奇数。那么也可以得到 nnn 为偶数。若只保留边权为 222 的边,这个图没有规律,即每个点的度数可以是奇数也可以是偶数。原图中度数为奇数的点有偶数个。(你可以考虑一条边会贡献两个度数,所以总度数应该是偶数)考虑构造欧拉回路来解决问题:我们建立一个虚点与所有度数为奇数的点连一条边权为 111 的边,这样保证了原图中的所有点和虚点的度数都是偶数,然后跑欧拉回原创 2021-08-22 22:25:04 · 131 阅读 · 0 评论 -
【XSY2698】挑选子序列(二分,DLX)
题面挑选子序列题解非常 NOI 的一道题(给出很多奇奇怪怪的定义)。先二分答案为 midmidmid,那么我们只需判定:是否存在子序列 seqseqseq 使得串 s1,s2s1,s2s1,s2 与 ttt 的距离不超过 midmidmid,即串 s1,s2s1,s2s1,s2 各位置与 ttt 的距离不超过 midmidmid,那么对于串 s1,s2s1,s2s1,s2 的每个位置 iii,seqseqseq 中都应该存在一个位置 jjj 使得 i,ji,ji,j 的距离小于等于 midmidmi原创 2021-08-20 09:11:25 · 420 阅读 · 0 评论 -
【THUWC2020】Day2T2(dfs树,DP,线段树合并)
对于每一个点 uuu,我们先找到满足右述条件的深度最小的 uuu 祖先 fff 并记这个深度最小的祖先的深度为 dp(u)dp(u)dp(u):fff 能只通过除了树上 [f,u][f,u][f,u] 路径所包含的边之外的边到达 uuu。那么显然,一次询问 [a,b][a,b][a,b] 中,对于 bbb 的子树中的一点 uuu,111 号点能到达 uuu 当且仅当 minv∈[b,u]dp(v)≤dep(a)\min\limits_{v\in[b,u]} dp(v)\leq dep(a)v∈[b,u]原创 2021-08-03 20:45:56 · 322 阅读 · 0 评论 -
【XSY3913】XOR(递归,分治,剪枝)
题面XOR题解以下对于一个数 xxx,用 xix_ixi 表示 xxx 在二进制下的第 iii 位。如果这个数本身就带下标,如 aka_kak,那么用 ak,ia_{k,i}ak,i 表示 aka_kak 在二进制下的第 iii 位。发现带上绝对值很难搞,考虑如何确定绝对值的符号:对于 ∣a−b∣|a-b|∣a−b∣ 来说,我们找到 aaa 和 bbb 在二进制下最高的不同位 yyy,那么如果 ay=1a_y=1ay=1(那么 by=0b_y=0by=0),有 ∣a−b∣=a−b|a-原创 2021-03-29 21:35:54 · 155 阅读 · 0 评论 -
【SDOI2015】排序(dfs+结论)
仔细审题:两个操作序列不同,当且仅当操作个数不同,或者至少一个操作不同(种类不同或者操作位置不同(注意,这里的“操作位置”指的是操作顺序))。也就是说操作序列对答案的贡献多与少和你某一次操作交换哪两段数字没有关系。还有一个:每种操作最多可以执行一次。这是一个很重要的条件。考场上手玩了一下样例,发现操作结果和操作顺序没有关系(结论1,证明是赛后才想出来的)。那么我们把操作种类都相同的操作序列都归为一类。显然,根据结论1,如果某一类中的某一个操作序列(设其长度为 lenlenlen)能实现原创 2020-07-19 16:25:15 · 196 阅读 · 0 评论 -
【XSY2498】贪吃蛇(bfs/dfs)
题面DescriptionInputOutputSample Input & Sample Output【样例输入1】4 5##.....1#@432#....#. 【样例输出1】4 【样例输入2】4 4#78#.612.543..@. 【样例输出2】6 【样例输入3】3 23@2#1# 【样例输出3】-1HINT...原创 2019-08-14 21:51:34 · 748 阅读 · 0 评论