随笔分类 - 洛谷官方题单
摘要:原题链接:https://www.luogu.com.cn/problem/P1160 题意解读:本题是双向链表的模拟题,要快速实现M个节点的删除,用数组模拟链表是最佳做法。 解题思路: 双向链表关键要实现好两个操作: void add(int k, int v); //在第k个节点后增加第v的号节
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1996 题意解读:约瑟夫问题是队列的典型应用。 解题思路: n个人围圈报数,可以直接基于数组实现循环队列操作,再定义额外数组记录每个人是否已经出圈即可。 更直观的做法,定义队列,初始放入1~n, 然后重复n次,每次从1~
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1449 题意解读:计算后缀表达式,堆栈的典型应用。 解题思路: 本题要解决两个问题:字符串的读取、后缀表达式的计算,整个过程如下, 要将字符串拆接触操作数、操作符,将操作数放入堆栈,操作符用于计算 遍历每一个字符: 1、
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P3613 题意解读:此题很容易想成用二维数组求解,但是最多有10^5 * 10^5个寄包柜格子,二维数据会爆空间,题目明确各自一共不超过10^7,所以需要动态数据结构vector。 解题思路: vector的问题在于需要提
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P3156 解题思路:简单的数组题,唯一需要注意的是读写的数据量比较大,输入输出最好用scanf、printf 100分代码: #include <bits/stdc++.h> using namespace std; co
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1825 题意解读:计算最短路,依然是BFS。 解题思路: 相比传统的最短路迷宫,多了个传输装置,要解决几个关键问题: 1、传输装置的存储 定义一个数组,vector<node> trans[30],数据的每个元素都是一个
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1032 题意解读:要计算子串变换的最少步数,典型的最短路问题,可以通过BFS求解。 解题思路: 思路上比较直观,从给定的字符串开始,找有多少种替换可能,依次进行替换,存入队列,继续BFS,过程中记录替换的次数 但是,有一
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1162 题意解读:要把闭合圈内的0填为2,DFS处理即可。 解题思路: 由于方阵内只有一个闭合圈,所以闭合圈以外的0一定和边缘相连通,只需要从边缘开始,把0的连通块全部标记为2 最后再输出时,2输出0,1输出1,0输出2
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1596 题意解读:本题就是计算连通分量的数量,通过DFS洪水填充即可。 解题思路: 遍历每一个格子,如果没有标记过且有水,则对其进行标记,再枚举8个方向的格子,判断是否同样没有水且没有标记过,DFS递归处理。 100分代
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P2404 题意解读:将整数拆成若干数相加,按字母序输出,可以转换成从小到大往数组填数的问题,直到填的数之和等于n。 解题思路: 通过DFS,每次填一个数,填数时从1~n-1逐个填 注意两个条件不能继续DFS: 1、将填的数
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1101 题意解读:对于方阵中的每一个字符,在8个方向上判断是否和"yizhong"匹配,是一个递归问题。 解题思路: 用char a[N][N]存储所有字符方阵,用bool b[N][N]标记每个字符是否在任一方向上和y
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1019 题意解读:要计算接龙能得到的最长字符串,可以通过DFS暴搜所有可能的接龙方案 解题思路: DFS的关键在于两个判断: 1、下一个单词是否可以和上一个单词接龙,最短公共长度是多少(只需要看两个单词的最短公共长度,这
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1605 题意解读:从起点走到终点的方案数,DFS可遍历所有情况。 解题思路: 在DFS过程中,有两种标记 墙:不能访问 已访问过的,不能重复访问 定义数组int a[N][N]表示迷宫,1是墙或者已访问过的,0是可以通过
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1433 题意解读:计算经过所有奶酪一次的总路径最短,可以采用dfs、dp等方法。 解题思路: 最直接的思路是DFS,暴搜所有的路径方案,计算最小距离,n最大是15,复杂度为15!≈10^12,必定会超时,先保证正确性,得
阅读全文
摘要:解题思路参考:https://www.cnblogs.com/jcwy/p/18003130 这里给出DFS方法的代码。 100分代码: #include <bits/stdc++.h> using namespace std; int s[15], k[15], v[15], n; int ans
阅读全文
摘要:参考:https://www.cnblogs.com/jcwy/p/17999205 的方法二
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P2895 题意解读:所谓安全格子,就是在所有流星坠落之后,没有被烧焦的格子,要计算从起点到这些格子任一一个的最短路径,BFS可以解决。 解题思路: 1、读取数据,先把所有流星坠落点以及周围被烧焦的格子进行标记,得到安全格子
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1135 题意解读:计算A到B至少要按几次电梯,本质上就是求A到B的最短路径,可以通过BFS解决。 解题思路: 位于每一层,有两种选择:向上、向下 BFS搜索直接从A找到B,每扩展一层,层数+1,层数即按电梯次数 100分
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1443 题意解读: 无论是国际象棋还是中国象棋,马的活动范围都是一样的: 只不过国际象棋棋子是在格子中,中国象棋棋子是在交点,坐标的变化方式是一样的,根据此活动范围,计算马到达每一个点的最短路径。 解题思路: 根据马的活
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P2392 解题思路:参考https://www.cnblogs.com/jcwy/p/18003097 前面已经给出了二进制法的代码,这里给出DFS的代码 简化一下逻辑:只需要枚举子集和,然后计算剩下元素和,取较大那一组的
阅读全文