2.1 计算机发展史 早期电子计算机作为军事计算工具,但经历半个世纪飞速发展,给人类社会带来了巨大贡献。 2.1.1 计算机硬件发展 早期计算机体积大,常用于工业: 1946 -1957:第一代电子管计算机——数据处理机。 1958 -1964:第二代晶体管计算机——工业控制机。 之后硬件技术飞速发…
1.1 数据库系统概述 1.1.1 基本概念 数据(data) 数据是数据库中存储的基本对象。 描述事物的符号记录称为数据。 数据有多种表现形式,它们都可以经过数字化之后存入计算机。 数据的表现形式还不能完全表达其内容,需要经过解释,数据和关于数据的解释是不可分的。 数据的解释是指对数据含义的说明,…
Original Link 思想: 双指针。 快指针 i 作为某一连续区间的右端点,慢指针 j 作为该区间的左端点; 初始化设差值为 t = a[1] - a[0],每当 a[i] - a[i - 1] == t 时更新区间, 更新区间时,i 不断右移,直到不满足 a[i] - a[i - 1] =…
Original Link 思想: 前缀和,双指针。 快指针 i 作为某一分割区间的右端点,慢指针 j 作为该区间的左端点; 当 a[i] - a[j + 1] >= m 时,需要将 j 右移,直到满足 a[i] - a[j] <= m, 此时判断 a[i] - a[j] 的值,若满足 …
Original 思想: 模拟,枚举。 枚举进制从 i = 2 ~ 10,判断 i 进制下是否回文。 将数转换进制后,化为 string 判断即可。 代码: #include <bits/stdc++.h> using namespace std; bool check(int x){ …
Original Link 思想: 双指针。 快指针 i 作为某一连续最长不重复区间的右端点,慢指针 j 作为该区间的左端点; 遍历数组 a[i],用 vis[a[i]] 标记当前区间已经存在的数。 当 vis[a[i]] > 1 时: 说明当前区间存在重复数字,则 j 不断右移,期间 vis…
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]…