随笔分类 -  dfs

摘要:题目链接 链接 翻译 给你一棵树,树上的每一个节点都带有权值。 让你统计这样的点 x 的个数,使得以 x 为根的时候,所有以 x 开始,以某个节点结束的路径中每个节点的权值 都是唯一的,即每个权值都只出现了一次。 称这样的 x 为 \(distinctive\ roo 阅读全文
posted @ 2021-01-11 13:02 AWCXV 阅读(130) 评论(0) 推荐(0) 编辑
摘要:题目链接 链接 翻译 让你给树上的每条边分配一个数字。要求这 n1 个数的乘积要等于 k 分配的 1 的个数要尽可能少。 这个 k 质因数分解的时候,每个质因子的指数都是 1,且 k 是以告诉你它每个质因子的形式给出的。 要求树上任意两点之间的距离和 阅读全文
posted @ 2020-12-25 18:08 AWCXV 阅读(77) 评论(0) 推荐(0) 编辑
摘要:题目链接 点我呀 翻译 给你一个 n×m 的网格, 让你在上面放南极和北极磁铁, 但是这两种磁铁, 在你没有激活他们的时候, 是不会 互相吸引的, 只有在你选中其中一对南北极之后, 北极才会被南极吸引, 然后南极不动, 北极离它近一点 (当然, 只有他们俩 在同一行或者同一列的时 阅读全文
posted @ 2020-06-20 22:27 AWCXV 阅读(143) 评论(0) 推荐(0) 编辑
摘要:题目链接 点我呀 翻译 给你一棵树, 让你在这棵树上选择恰好k个点, 这k个点是发展工业的, 然后其余的n - k个点发展旅游业。 但是根节点(约定1号节点是根节点)例外, 它可以发展旅游业也可以发展工业(不过后面会发现这条件没啥用。。)。 假设x是你选出来的k个点中的一个, 对于所有的x, 你需要 阅读全文
posted @ 2020-06-14 15:13 AWCXV 阅读(157) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 设dis[v]表示v以上的点到达这个点的最大权值(肯定是它的祖先中的某个点到这个点) 类似于最大连续累加和 当往下走(x,y)这条边的时候,设其权值为w,以及到目前为止走过的最大权值和cur 如果cura[x]那么它以及它下面的所有节点都 阅读全文
posted @ 2019-03-27 13:25 AWCXV 阅读(156) 评论(1) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 给你一棵树 让你选择若干个修理点. 这些修理点被选中之后,节点i到1号节点之间的所有"坏路"都会被修好 问最少需要选择多少个点才能将所有的坏路修好 【题解】 以1为根节点建立一棵树 对于每一棵子树,如果里面有"坏路",必然要选择一个修理点,怎么选择呢? 阅读全文
posted @ 2019-03-11 23:40 AWCXV 阅读(164) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 有人转载官方号的动态。 又有其他人转载其他人转载的动态. 问你最长的一条转载动态的链有多长. 【题解】 用map把每个人的英文都转成小写的 然后从map中获取单词的标号 转换成图。 然后从根节点开始dfs即可 【代码】 cpp import java.i 阅读全文
posted @ 2019-02-16 19:58 AWCXV 阅读(206) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 【题解】 我们可以把原图的边都反向一下. 然后以每个休息点作为起点,进行dfs. 每次在扩展节点y的时候,要求这个点y必须只有一个出度,然后就能走多远就走多远就ok了。 会发现每个休息点占据的那些链都是唯一的,所以其他的休息点在进行dfs的时候,不会重复 阅读全文
posted @ 2018-10-04 14:38 AWCXV 阅读(129) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 让你把一个字符串的所有回文子串加起来。(当做数字加起来) 求他们的和。 【题解】 回文树。 从两个根节点分别遍历整棵回文树。 按照每个节点的定义。 得到每个节点对应的数字就好。 (节点之间都有联系,很容易快速搞出来到达下一个节点的数字是什么的。 有点卡内 阅读全文
posted @ 2018-09-02 19:31 AWCXV 阅读(461) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 把x..y这条路径上的点标记一下。 然后从x开始dfs,要求不能走到那些标记过的点上。记录节点个数为cnt1(包括x) 然后从y开始dfs,也要求不能走到那些标记过的点上。记录节点个数为cnt2(包括y) 答案就为n (n 1) 阅读全文
posted @ 2018-05-15 08:03 AWCXV 阅读(202) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 dfs序 进入的位置设为1出去的设为 1则某个点进去的位置的dfs序的前缀和就是这个点到根节点的路径数。 (可以巧妙的把那些分叉路径去掉。 修改成公路后。就把下面的那个点(深度高的)的进入和出去的值都设置为0 用线段树维护区间和 阅读全文
posted @ 2018-03-15 23:32 AWCXV 阅读(144) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 考虑,为什么一个连通块里面的空格没有变成一个矩形? 如果不是形成矩形的话。 肯定是因为某个2x2的单张方形里面。 只有一个角是墙。其他角都是空的正方形。 举一些例子。 可以看到这个连通块不是长方形。 就是因为有 和 如果我们把这 阅读全文
posted @ 2018-02-08 16:01 AWCXV 阅读(97) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 对m个串建立一棵字典树。 然后对主串。 尝试从第一个位置开始.在字典树中尝试匹配 如果匹配到了位置i 就再从位置i+1开始尝试匹配 (这时又重新从根节点开始重新匹配 每次匹配最多只要往下走50步。 写个递归的过程就好。 【代码】 阅读全文
posted @ 2018-01-23 13:21 AWCXV 阅读(135) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 找到任意一个环。 然后枚举删掉其中的某一条边即可。 (因为肯定要删掉这个环的,那么方法自然就是删掉其中的某一条边 (其它环,如果都包括这条边,那么就可以,否则,某个环不包括那也没办法,自然就无解了。 这样枚举的边的数目最多是50 阅读全文
posted @ 2018-01-14 09:53 AWCXV 阅读(149) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 写个dfs看看是不是每个节点都有3个叶子节点就可以了。 【代码】 cpp include using namespace std; const int N = 1e3; int n; vector g[N+10]; bool o 阅读全文
posted @ 2018-01-09 09:50 AWCXV 阅读(108) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 可以先确定当前这棵子树的dfs序的范围。 然后第一个元素肯定是这棵子树的根节点。 那么只要在这棵子树的范围里面枚举节点。 看看有没有下一个bfs序的节点即可。 如果有的话,那么就说明这个根节点有多个子树。 则加入到它的儿子里面去 阅读全文
posted @ 2017-11-28 15:15 AWCXV 阅读(253) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 写两个dfs模拟就好。 注意每12个数字输出一个换行。。 【代码】 cpp / 1.Shoud it use long long ? 2.Have you ever test several sample(at least th 阅读全文
posted @ 2017-11-25 11:19 AWCXV 阅读(189) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 给你一个n m的地图。 每个地图为0的时候可以安全走过,且走过后变成1. (一定要离开之后才会变成1) 而为1的则走过之后会掉入下一层。 你一开始在初始位置(x1,y1); 且你想到达位置(x2,y2); 且要求到达(x2,y2)并且掉进下一层。 保证( 阅读全文
posted @ 2017-11-01 20:49 AWCXV 阅读(143) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 预处理出某个方向的左边、前边、右边是哪个方向就好了。 然后就是普通的bfs了。 hash存到某个点,走到这里的方向的最小距离。 dfs输出路径。 【代码】 cpp include using namespace std; //[ 阅读全文
posted @ 2017-10-22 12:55 AWCXV 阅读(130) 评论(0) 推荐(0) 编辑
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 每个图案里面的“洞”的个数都是不同的。 则可以根据这个判别每个图像是什么。 先用dfs确定轮廓之后。 再从每个白点出发dfs,遇到的黑点且没有到达过边界,那么它就是所遇到的黑点里面的“洞”; 计算每个轮廓有多少个"洞"就好 【代 阅读全文
posted @ 2017-10-21 21:08 AWCXV 阅读(215) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示