随笔分类 -  洛谷官方题单

摘要:原题链接:https://www.luogu.com.cn/problem/P1827 题意解读:已知二叉树的中序、前序遍历结果,求后序遍历结果。 解题思路: 已知中序、前序(或后序)遍历的结果,要求后序(或前序)遍历的结果,本质上就是借助于已知的前序(或后序)遍历结果寻找二叉树的根, 再根据根节点 阅读全文
posted @ 2024-03-14 10:43 hackerchef 阅读(101) 评论(0) 推荐(0)
摘要:原题链接:https://www.luogu.com.cn/problem/P4913 题意解读:计算二叉树的深度 解题思路: 首先介绍二叉树的存储方式,对于本题,直接用数组模拟,数组的下标即节点号 struct node { int l, r; } tree[N]; tree[i].l存的是节点i 阅读全文
posted @ 2024-03-14 09:48 hackerchef 阅读(171) 评论(0) 推荐(0)
摘要:原题链接:https://www.luogu.com.cn/problem/P4715 题意解读:计算亚军得主,注意能力值最高的肯定是冠军,但能力值第二高的不一定是亚军,因为有可能中途就遭遇冠军。 解题思路: 根据题意,两两比赛,一轮后再按顺序两两比赛,形如一棵二叉树,但解题其实用不到二叉树的数据结 阅读全文
posted @ 2024-03-13 16:18 hackerchef 阅读(86) 评论(0) 推荐(0)
摘要:原题链接:https://www.luogu.com.cn/problem/P2234 题意解读:要计算每一天最小波动值的和,需要对每一天求最小波动值,再求和,如果暴力法,时间复杂度在1+2+3+......+32767≈5*10^8,可能会超时。 解题思路: 1、暴力法:由于本题测试数据比较水,实 阅读全文
posted @ 2024-03-13 09:48 hackerchef 阅读(47) 评论(0) 推荐(0)
摘要:原题链接:https://www.luogu.com.cn/problem/P4387 题意解读:判断一组序列入栈后,出栈序列的合法性。 解题思路: 数据长度100000,直接模拟堆栈的入栈和出栈即可 遍历每一个入栈元素,依次入栈, 每一个元素入栈后,比较栈顶元素和出栈序列第一个, 如果相等,则出栈 阅读全文
posted @ 2024-03-12 17:42 hackerchef 阅读(126) 评论(0) 推荐(0)
摘要:原题链接:https://www.luogu.com.cn/problem/P1241 题意解读:括号配对问题,直观上是堆栈的应用。关键的匹配策略是读懂该句:考察它与它左侧离它最近的未匹配的的左括号。 解题思路: 本题所需核心数据结构是堆栈,由于要实现从栈顶找到第一个未匹配的左括号,所以堆栈中只存所 阅读全文
posted @ 2024-03-12 11:53 hackerchef 阅读(91) 评论(0) 推荐(0)
摘要:原题链接:https://www.luogu.com.cn/problem/P2058 题意解读:计算24小时时间窗口内不同国家的数量,是队列的典型应用。 解题思路: 本题需要用到两个关键的数据结构:队列、数组 队列用来保存24小时内到达的船的时间,数组用来保存24小时内每个国家有多少人 每到一只船 阅读全文
posted @ 2024-03-12 10:21 hackerchef 阅读(92) 评论(0) 推荐(0)
摘要:原题链接:https://www.luogu.com.cn/problem/P1540 题意解读:本题模拟内存的调入调出,内存先入先出的特性就是队列。 解题思路: 本题需要两种数据结构:队列、数组 队列用来模拟内存的操作,数组充当hash表用于判断单词在内存是否存在 核心逻辑:对于每一个单词,如果内 阅读全文
posted @ 2024-03-12 09:45 hackerchef 阅读(85) 评论(0) 推荐(0)
摘要:原题链接:https://www.luogu.com.cn/problem/P1160 题意解读:本题是双向链表的模拟题,要快速实现M个节点的删除,用数组模拟链表是最佳做法。 解题思路: 双向链表关键要实现好两个操作: void add(int k, int v); //在第k个节点后增加第v的号节 阅读全文
posted @ 2024-03-11 19:41 hackerchef 阅读(122) 评论(0) 推荐(0)
摘要:原题链接:https://www.luogu.com.cn/problem/P1996 题意解读:约瑟夫问题是队列的典型应用。 解题思路: n个人围圈报数,可以直接基于数组实现循环队列操作,再定义额外数组记录每个人是否已经出圈即可。 更直观的做法,定义队列,初始放入1~n, 然后重复n次,每次从1~ 阅读全文
posted @ 2024-03-11 11:55 hackerchef 阅读(70) 评论(0) 推荐(0)
摘要:原题链接:https://www.luogu.com.cn/problem/P1449 题意解读:计算后缀表达式,堆栈的典型应用。 解题思路: 本题要解决两个问题:字符串的读取、后缀表达式的计算,整个过程如下, 要将字符串拆接触操作数、操作符,将操作数放入堆栈,操作符用于计算 遍历每一个字符: 1、 阅读全文
posted @ 2024-03-11 11:29 hackerchef 阅读(158) 评论(0) 推荐(0)
摘要:原题链接:https://www.luogu.com.cn/problem/P3613 题意解读:此题很容易想成用二维数组求解,但是最多有10^5 * 10^5个寄包柜格子,二维数据会爆空间,题目明确各自一共不超过10^7,所以需要动态数据结构vector。 解题思路: vector的问题在于需要提 阅读全文
posted @ 2024-03-11 09:43 hackerchef 阅读(72) 评论(0) 推荐(0)
摘要:原题链接:https://www.luogu.com.cn/problem/P3156 解题思路:简单的数组题,唯一需要注意的是读写的数据量比较大,输入输出最好用scanf、printf 100分代码: #include <bits/stdc++.h> using namespace std; co 阅读全文
posted @ 2024-03-11 09:25 hackerchef 阅读(60) 评论(0) 推荐(0)
摘要:原题链接:https://www.luogu.com.cn/problem/P1825 题意解读:计算最短路,依然是BFS。 解题思路: 相比传统的最短路迷宫,多了个传输装置,要解决几个关键问题: 1、传输装置的存储 定义一个数组,vector<node> trans[30],数据的每个元素都是一个 阅读全文
posted @ 2024-03-08 16:22 hackerchef 阅读(62) 评论(0) 推荐(0)
摘要:原题链接:https://www.luogu.com.cn/problem/P1032 题意解读:要计算子串变换的最少步数,典型的最短路问题,可以通过BFS求解。 解题思路: 思路上比较直观,从给定的字符串开始,找有多少种替换可能,依次进行替换,存入队列,继续BFS,过程中记录替换的次数 但是,有一 阅读全文
posted @ 2024-03-08 14:38 hackerchef 阅读(68) 评论(0) 推荐(0)
摘要:原题链接:https://www.luogu.com.cn/problem/P1162 题意解读:要把闭合圈内的0填为2,DFS处理即可。 解题思路: 由于方阵内只有一个闭合圈,所以闭合圈以外的0一定和边缘相连通,只需要从边缘开始,把0的连通块全部标记为2 最后再输出时,2输出0,1输出1,0输出2 阅读全文
posted @ 2024-03-07 19:13 hackerchef 阅读(50) 评论(0) 推荐(0)
摘要:原题链接:https://www.luogu.com.cn/problem/P1596 题意解读:本题就是计算连通分量的数量,通过DFS洪水填充即可。 解题思路: 遍历每一个格子,如果没有标记过且有水,则对其进行标记,再枚举8个方向的格子,判断是否同样没有水且没有标记过,DFS递归处理。 100分代 阅读全文
posted @ 2024-03-07 18:26 hackerchef 阅读(68) 评论(0) 推荐(0)
摘要:原题链接:https://www.luogu.com.cn/problem/P2404 题意解读:将整数拆成若干数相加,按字母序输出,可以转换成从小到大往数组填数的问题,直到填的数之和等于n。 解题思路: 通过DFS,每次填一个数,填数时从1~n-1逐个填 注意两个条件不能继续DFS: 1、将填的数 阅读全文
posted @ 2024-03-07 17:59 hackerchef 阅读(39) 评论(0) 推荐(0)
摘要:原题链接:https://www.luogu.com.cn/problem/P1101 题意解读:对于方阵中的每一个字符,在8个方向上判断是否和"yizhong"匹配,是一个递归问题。 解题思路: 用char a[N][N]存储所有字符方阵,用bool b[N][N]标记每个字符是否在任一方向上和y 阅读全文
posted @ 2024-03-07 16:54 hackerchef 阅读(50) 评论(0) 推荐(0)
摘要:原题链接:https://www.luogu.com.cn/problem/P1019 题意解读:要计算接龙能得到的最长字符串,可以通过DFS暴搜所有可能的接龙方案 解题思路: DFS的关键在于两个判断: 1、下一个单词是否可以和上一个单词接龙,最短公共长度是多少(只需要看两个单词的最短公共长度,这 阅读全文
posted @ 2024-03-07 14:42 hackerchef 阅读(95) 评论(0) 推荐(0)