- 博客(6)
- 收藏
- 关注
原创 洛谷 P3378 【模板】堆 题解——从零开始看懂堆
堆是一种特殊的完全二叉树小根堆(本题需要):每个节点的值 ≤ 它的子节点的值这意味着:根节点就是最小值 ✅从上到下越来越小(不严格,兄弟之间没有大小关系)大根堆(反过来):每个节点的值 ≥ 它的子节点的值学会手写堆:理解 "上滤" 和 "下滤" 的核心思想会用 STL:实际做题时节省时间注意细节:边界条件和输入输出优化很重要掌握了堆,你就能解决:动态求最小值/最大值堆排序求第 k 大的数Dijkstra 算法的优化哈夫曼编码练习题推荐P1090 合并果子P1168 中位数。
2026-05-06 21:28:58
426
原创 P4913 【深基16.例3】二叉树深度题解
树的深度定义:根到最远叶子结点的层数递推公式BFS按层遍历,天然适合求深度DFS递归最简洁,但注意栈深度限制大数据下优先用BFS,安全稳定。
2026-04-24 16:59:18
337
原创 P1165 日志分析题解
这题是典型的栈问题,三种操作1、0入栈x2、1出栈3、2查询最大值乍一看很简单,定义一个栈,循环判断三种条件进行操作就行了,但是再一看,诶,也不难!哈哈哈哈哈哈,不开玩笑了,对于我这种菜鸡来说还是有必要写一写的,我当时在做这题的时候就在想怎么找到这个最大值?如果我用一个普通的栈,那我每次查询都需要遍历完整个栈,时间复杂度 O(n),但 n 最大 20 万,所以我TLE了。。。如果像之前用一个变量记录当前最大值,出栈时,最大值弹出,我是不知道新的最大值是多少的。
2026-04-14 20:33:19
29
原创 公益C班栈学习笔记
scanfprintfcincoutstk.size()是无符号整数类型,所以需要强制转型,但其实这句可以有更好的写法cout会自动识别stk.size()返回的size_t类型,更快更简洁。
2026-04-14 20:14:09
22
原创 B3614 【模板】栈题解
数据读入对效率的影响,所以要用scanf和printf,我试了cin和cout,只能通过部分样例,除非用加速,但是加速看着有点复杂,不想了解,建议还是直接用c的输入输出。逐行输入数据组,定义一个栈stk存储下面的操作,定义为unsigned long long因为x的取值范围。cin、cout和scanf、printf不能混用,这一点我深刻认识到了,会输入错乱,所以建议用c的就行。逐行输入操作,op数组用于存放输入的字符串,便于后面判断是栈的哪些操作。要注意的点说完了,下面直接上ac的代码。
2026-04-09 18:01:07
40
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅