随笔分类 - 深度优先搜索
摘要:题目描述 异或是一种神奇的运算,大部分人把它总结成不进位加法. 在生活中…xor运算也很常见。比如,对于一个问题的回答,是为1,否为0.那么: (A是否是男生 )xor( B是否是男生)=A和B是否能够成为情侣 好了,现在我们来制造和处理一些复杂的情况。比如我们将给出一颗树,它很高兴自己有N个结点。
阅读全文
摘要:我们首先来看一下什么是前向星. 前向星是一种特殊的边集数组,我们把边集数组中的每一条边按照起点从小到大排序,如果起点相同就按照终点从小到大排序, 并记录下以某个点为起点的所有边在数组中的起始位置和存储长度,那么前向星就构造好了. 用len[i]来记录所有以i为起点的边在数组中的存储长度. 用h[i]
阅读全文
摘要:题目传送门: https://www.luogu.com.cn/problem/P2802 题解思路: 雷区:回溯操作 在深度优先搜索的题目中,回溯是非常常见的一种操作,因此我最开始把回溯加上了,然后顺利的通过9个样例,最后一个死活A不了;最后分析发现算法是有问题的,因为如果采用回溯操作的话,那么小
阅读全文
摘要:void dfs()//参数用来表示状态 { if(到达终点状态) { ...//根据题意添加 return; } if(越界或者是不合法状态) return; if(特殊状态)//剪枝 return ; for(扩展方式) { if(扩展方式所达到状态合法) { 修改操作;//根据题意来添加 标记
阅读全文
摘要:2815:城堡问题 总时间限制:1000ms内存限制:65536kB描述 1 2 3 4 5 6 7 ############################# 1 # | # | # | | # ##### ##### # ##### # 2 # # | # # # # # # ##### ###
阅读全文
摘要:题目描述: 传送门 题解思路: 这是一道深搜的题目,把题目意思翻译解读后理解起来就更容易一些了。题目翻译:首先我们明确这个图是一棵树,边的权值=(边两端结点数量之差)*边的长度。 进一步翻译:我们只需要知道每条边两端节点数量分别是多少即可求解问题。那么如何计算边两端结点数量——首先选当前边上的其中一
阅读全文
摘要:题目传送门 最开始错误的思路是对整条字串进行dfs,看一位dfs进入下一位,这是没有充分理解题意的后果 核心解题思路:不要被这些规则变来变去搞混了,我们需要将原问题进行切割成小的子问题去分析。例如此处我们将每一位数都当做一个独立单位,首先求出在这个位置上有多少种可以存在的数的种类(0~9)。而这些独
阅读全文
摘要:题目描述 如下图所示的一棵二叉树的深度、宽度及结点间距离分别为: 深度:4 宽度:4(同一层最多结点个数) 结点间距离: ⑧→⑥为8 (3×2+2=8) ⑥→⑦为3 (1×2+1=3) 注:结点间距离的定义:由结点向根方向(上行方向)时的边数×2, 与由根向叶结点方向(下行方向)时的边数之和。 输入
阅读全文
摘要:题目背景 高手最近谈恋爱了。不过是单相思。“即使是单相思,也是完整的爱情”,高手从未放弃对它的追求。今天,这个阳光明媚的早晨,太阳从西边缓缓升起。于是它找到高手,希望在晨读开始之前和高手一起在鳌头山上一起散步。高手当然不会放弃这次梦寐以求的机会,他已经准备好了一切。 题目描述 鳌头山上有n个观景点,
阅读全文
摘要:题目描述 一个N×M的由非负整数构成的数字矩阵,你需要在其中取出若干个数字,使得取出的任意两个数字不相邻(若一个数字在另外一个数字相邻8个格子中的一个即认为这两个数字相邻),求取出数字和最大是多少。 输入格式 第1行有一个正整数T,表示了有T组数据。 对于每一组数据,第一行有两个正整数N和M,表示了
阅读全文