logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

【例 2】暗的连锁(信息学奥赛一本通- P1553)

附加边的本质跨度:附加边连接的绝非仅是相邻节点。一条跨越整棵树的附加边会保护沿途所有的主要边,切忌使用哈希表(如map)仅统计相邻节点的边。根节点的边界特判:在统计答案时,cnt[i]代表的是节点i与其父节点之间的连边。假设指定1号节点为树根,那么根节点之上是不存在主要边的,循环统计答案时必须从2开始(即忽略cnt[1]RMQ查询的参数陷阱:在使用ST表查LCA时,传入的参数绝对不能是树上节点编号

#算法
祖孙询问(信息学奥赛一本通- P1557)

动态获取根节点:本题并没有规定1是根节点,而是明确指出输入中与-1连边的点才是根节点。在读入数据时必须进行拦截判断,并从该root开始 DFS。vector数组的正确初始化:声明邻接表时,必须写成(一个大小为 N 的数组,每个元素是vector若写成且未初始化大小,执行push_back会直接导致段错误。RMQ 中的“张冠李戴”:ST 表查询函数query(L,R)传入的必须是时间戳(欧拉序的下标

#算法#数据结构
最短路径(shopth)(信息学奥赛一本通- P1378)

【输入】第1行:一个正数n(2≤n≤80),表示图G的顶点总数。第2行:一个整数,表示源点v0(v0∈V,v0可以是图G中任意一个顶点)。第3至第n+2行,用一个邻接矩阵W给出了这个图。【输出】共包含n-1行,按照顶点编号从小到大的顺序,每行输出源点v0到一个顶点的最短距离。每行的具体格式参照样例。【输入样例】510 2 - - 10- 0 3 - 7- - 0 4 -- - - 0 5- - 6

对称二叉树(tree_c)(信息学奥赛一本通- P1368)

二叉树用顺序结构给出,若读到#则为空,二叉树T1=ABCDE,T2=ABCD#E,如果二叉树是对称的,输出“Yes”,反之输出“No”。如果二叉树的左右子树的结构是对称的,即两棵子树皆为空,或者皆不空,则称该二叉树是对称的。编程判断给定的二叉树是否对称.如果二叉树是对称的,输出“Yes”,反之输出“No”。例:如下图中的二叉树T1是对称的,T2是不对称的。二叉树用顺序结构给出,若读到#则为空。

#算法#数据结构
二叉树遍历(flist)(信息学奥赛一本通- P1364)全网最易理解版本

在二叉树遍历的题目中,我们最常见的是“前序+中序”或者“后序+中序”求树。这种题目比较简单,因为根节点总是躲在字符串的最头或者最尾,一抓一个准。但是,“中序 + 层序” 往往让人头大。因为层序遍历是按层级从上往下数的,子树的根节点在字符串里是散落的,不像前序/后序那样连续。今天就来拆解这道经典题目,采用“建树求解”和“直接递归”两种解法。写法二(直接输出):代码量少,逻辑清晰,不容易写错,推荐考试

#深度优先#算法#数据结构 +1
二叉树输出(btout)(信息学奥赛一本通- P1366)

树的凹入表示法主要用于树的屏幕或打印输出,其表示的基本思想是兄弟间等长,一个结点的长度要不小于其子结点的长度。二叉树也可以这样表示,假设叶结点的长度为1,一个非叶结点的长度等于它的左右子树的长度之和。两行,每行是由字母组成的字符串(一行的每个字符都是唯一的),分别表示二叉树的先序遍历和中序遍历的序列。假定一棵二叉树一个结点用一个字符描述,现在给出先序和中序遍历的字符串,用树的凹入表示法输出该二叉树

#数据结构#算法#c++
查找二叉树(tree_a)(信息学奥赛一本通- P1367)

第一行n为二叉树的结点个树,n<=100;第二行x表示要查找的结点的值;以下第一列数据是各结点的值,第二列数据是左儿子结点编号,第三列数据是右儿子结点编号。已知一棵二叉树用邻接表结构存储,中序查找二叉树中值为x的结点,并指出是第几个结点。一个数即查找的结点编号。

#算法#数据结构#c++
【深基16.例3】二叉树深度(洛谷P4913)

给出每个结点的两个子结点编号(均不超过 n),建立一棵二叉树(根节点的编号为 1),如果是叶子结点,则输入。之后 n 行,第 i 行两个整数 l、r,分别表示结点 i 的左右子结点编号。在遍历过程中,利用父节点的深度信息,推算出子节点的深度(父节点深度+ 1)。函数中,我们负责读取数据、初始化根节点深度,并调用 BFS 函数。将根节点(编号 1)入队,并假设其深度已初始化为 1。保证先访问层级低的

#算法#数据结构
动态规划-常见背包 正序逆序遍历总结

如果是dp[i][j]:容量j从小到大还是从大到小通常(只要保证用到i-1层数据就行)。如果是dp[j]为了让你“一眼懂”,我们只讨论的情况(这也是最常用的写法)。我们可以把一维数组dp[j]想象成一块。= 防止同一次循环中“自己抄自己”的新数据(保证只选一次)。= 故意“抄”刚刚算出来的新数据(允许无限选)。

#动态规划#算法
【例9.5】城市交通路网(信息学奥赛一本通- P1261)-纯动态规划解法

【题目描述】下图表示城市之间的交通路网,线段上的数字表示费用,单向通行由A->E。试用动态规划的最优化原理求出A->E的最省费用。如图:求v1到v10的最短路径长度及最短路径。【输入】第一行为城市的数量N;后面是N*N的表示两个城市间费用组成的矩阵。【输出】A->E的最省费用。【输入样例】10【输出样例】minlong=191 3 5 8 10。

#算法#动态规划#c++
    共 23 条
  • 1
  • 2
  • 3
  • 请选择