摘要: 第四单元 语法分析 4.1 自顶向下分析概述 自顶向下的分析(Top-Down Parsing) 从树的顶部(根节点)向底部(叶节点)方向构造分析树 最左推导(Left-most Derivation) 在最左推导中,总是选择每个句型的最左非终结符进行替换 E => E + E => id + E 阅读全文
posted @ 2021-10-25 11:51 hcのBlog 阅读(257) 评论(0) 推荐(0)
摘要: Acwing845. 八数码 一道比较难的BFS题目涉及三个过程 讲数串变成3*3的模式 进行移动(即BFS过程) 再把它还原成串 #include <iostream> #include <cstring> #include <unordered_map> #include <queue> usi 阅读全文
posted @ 2021-10-24 22:13 hcのBlog 阅读(25) 评论(0) 推荐(0)
摘要: 数组模拟(二) 单调栈 给定一个长度为 N 的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出 −1。 因为每一个答案(左边比它小的数)只跟局部的最小值相关,即左边第一个比它小的值 如果出现一个比较小的值(比前面的数小),则前面的数对于后面数的答案是无效的 所以我们可以用单调栈来实现,用栈 阅读全文
posted @ 2021-10-24 17:30 hcのBlog 阅读(56) 评论(0) 推荐(0)
摘要: 写在前面 近期的学习重点要放在图论了,之前一直在acwing中学习的数据结构都是数组模拟,数组模拟的效率比上stl要快上几倍,学完过后不久就会忘记,但是忘记也是一种学习,原本准备放弃数组模拟直接上stl要轻松的多,可是图论又得用到大量的数组模拟,最后还是打算攻坚克难把数组模拟各种数据结构给啃下来。( 阅读全文
posted @ 2021-10-24 14:59 hcのBlog 阅读(150) 评论(0) 推荐(0)
摘要: 写在前面的话 ​ 当初抱着总结所学的想法,硬着头皮写了几篇博客。东拼西凑,理解的不够深刻,再加上写博客不够熟练导致再复盘的时候大多数的注意力放在了怎么写上面,而忽视了应该怎样写,写出来要表达一些什么东西,写完之后学到了哪些东西,最终还是在学习中发现了这样的问题,也停止了一段时间去思考该如何利用博客。 阅读全文
posted @ 2021-10-20 21:02 hcのBlog 阅读(58) 评论(0) 推荐(0)
摘要: I - Base62 PS:一个任意进制转换的大数问题 传送门:Base62 短除法原理: 20(10进制) ⇒ 202(3进制) 20 = (2 * 3 ^ 2 + 0 * 3 ^ 1 + 2 * 3 ^ 0) 20 / 3 = 6 ......2 → 2 * 3 ^ 0 6 / 3 = 2 .. 阅读全文
posted @ 2021-10-12 21:03 hcのBlog 阅读(127) 评论(0) 推荐(0)
摘要: 指令集结构的分类 指令集结构不同的原因 **Q:**指令集结构都是相同的吗?如果不同,为什么不同? 不同的主要因素:CPU中用来存储操作数的存储单元的类型 为啥?那是因为CPU内部存储单元的类型是不同的。 CPU存储操作数的存储单元有三种主要类型 堆栈 累加器 寄存器组 指令集的结构分类 PS:因此 阅读全文
posted @ 2021-10-11 22:34 hcのBlog 阅读(3070) 评论(3) 推荐(0)
摘要: 并查集 基本操作 1.初始化 每一个元素初始时都是独立的一个集合 for(int i = 1; i <= maxn; i ++) f[i] = i; 2.查找 递归查找的过程,直到找到一个元素值等于其集合的值即其根节点的集 int find_set(int x){ return x == f[x] 阅读全文
posted @ 2021-10-10 00:34 hcのBlog 阅读(38) 评论(0) 推荐(0)
摘要: 预备知识 st表(Sparse Table) 主要用来解决区间最值问题(RMQ)以及维护区间的各种性质(比如维护一段区间的最大公约数)。 树状数组 单点更新 数组前缀和的查询 拓展:原数组是差分数组时,可进行区间更新,单点查询,当然想区间查询也有办法(维护两个树状数组即可)。 区别 树状数组用来维护 阅读全文
posted @ 2021-10-09 17:49 hcのBlog 阅读(117) 评论(0) 推荐(0)