Original Link 思想: 双指针。 快指针 i 作为某一连续的 "xxx" 区间的右端点,慢指针 j 作为该连续的 "xxx" 区间的左端点; 遍历字符串 s,当 s[i] == 'x' 时,将 j = i 标记为左端点,i 不断…
Original Link 思想: 二分。 巧克力的边长最大为 1e5。 考虑二分: 若当的边长满足要求,则说明还有可能取更长的边长; 若当前边长不满足要求,则说明当前边长不可能是最终答案; 当二分边界相交时即可得到最大的边长。 利用 pair<int, int> a[N] 存储边长数据…
Original Link 思想: 二维前缀和。 注意空间,数组不要开 long long。 注意给出的坐标的下标是从 $0$ 开始的。 循环遍历前缀和数组,维护一个最大价值即可。 代码: #include <bits/stdc++.h> using namespace std; con…
Origin Link 思想: 字符串模拟。 对于第一个符合要求的年份,可以暴力枚举日期进行判断。 第二个年份,需要保证 ABABBABA 的形式,则只需枚举 AB 即可。 代码: #include<bits/stdc++.h> using namespace std; int y[2]…
Original Link 思想: 前缀和。 特殊情况: 当数组元素小于三个时,无解。 当该数组所有数之和不为 $3$ 的整数倍时,无解。 设数组均分的值为 res,循环遍历前缀和数组 a。 设 i 为分割点,若 a[i] == res,说明将 i 作为分割点有可能成立,记录分割点数量为 cnt +…
Original link 思想: 前缀和与差分。 对于 a[i] 的操作,构建差分数组 b[i] 记录被操作的区间。 利用前缀和可知所有被操作的区间,即 b[i] != 0 的区间。 代码: #include <bits/stdc++.h> using namespace std; c…
1.1 计算机系统简介 1.1.1 计算机软硬件概念 计算机系统由硬件和软件两大部分组成: 硬件:是指计算机的实体部分,它由看得见摸得着的各种电子元器件,各类光、电、机设备的实物组成,如主机、外部设备等。 软件:由人们事先编制的具有各类特殊功能的程序组成,通常存放在计算机的主存或辅存内。 计算机性能…
词法的(Lex-i-cal):与语言的单词或词汇有关,但有别于语言的文法和结构的。 词法分析器以字符流作为输入,生成一系列的名字、关键字和标点符号,同时抛弃单词之间的空白符和注释。程序中每一点都有可能出现空白符和注释;如果让语法分析器来处理它们就会使得语法分析过于复杂,这便是将词法分析从语法分析中分…
1.1 基本概念 程序设计语言源程序的执行基本有两种方式: 翻译:使用翻译程序,将源程序翻译成为低级语言目标程序,然后执行目标程序。 解释:使用解释程序,对源程序逐个语句边解释边执行。 编译器:可以阅读以某一种语言(源语言)编写的程序,并把该程序翻译成为一个等价的、用另一种语言(目标语言)编写的程序…
前置知识 字典树 Trie Trie 是一种能够快速插入和查询字符串的多叉树结构。节点的编号各不相同,根节点编号为0,其他节点用来标识路径还可以标记单词插入的次数。边表示字符。 支持操作 Trie 维护字符串的集合,支持两种操作: 向集合中插入一个字符串:void insert(char *s) 在…