摘要:
文档中函数的参数带方括号( [ or ] )代表可选参数 ## 列表(list) ### 基础 列表是可迭代对象,列表有序 矩阵 ```python # 创建列表 [1,2,3,4,5] # 列表可以包含不同的数据类型 [1,2,3,"hello"] # 可以使用下表索引(从0开始) rhyme[1 阅读全文
摘要:
## SQL ### 注释 单行注释: `–-`或`#`注释内容 多行注释:`/*注释内容*/` ### SQL分类 | 分类 | 说明 | | :--: | : : | | DDL | 数据定义语言,用来定义数据库对象 | | DMI | 数据操作语言,用来对数据库表中的数据进行增删改 | | D 阅读全文
摘要:
`lowbit(n)`取出n在二进制表示下最低位的1的位置 ```c++ int lowbit(int x) { return (x & -x); } ``` 原理就是将x的原码与上x的补码(-x:补码, ~x:反码, 补码等于反码加一) eg: 6的原码:0110 6的补码:1010 &运算: 0 阅读全文
摘要:
`cin`可以读取连续元素的单个元素,类似`getchar()` 使用`printf`时最好添加头文件 #`include ` `%08.3f`, 表示最小宽度为8,保留3位小数,当宽度不足时在前面补上(对整型补0时不能打点号) `fgets`不会删除行末的回车字符 `strcmp(a, b)`比较 阅读全文
摘要:
**位运算都是对操作数在内存中的二进制位进行操作** 注意:只能操作整数类型,不能操作浮点数! 因为整数在内存中表示的是自己本身的值,而浮点数却不是(IEEE745) 这种限是编译器限制的,因为对以浮点表示法的浮点数进行位运算没有数学意义 搜罗一番,只找到其一个用途,从硬件上快速支持浮点数fabs, 阅读全文
摘要:
模板: ```c++ for (int i = 0, j = 0; i < n; i++) { while (j < (i) && check(i, j)) j++; //题目的具体逻辑 } ``` 核心思想: 先把暴力的解法写出来,看是否有单调性,若有则可用双指针 ```c++ for (int 阅读全文
摘要:
## 前缀和 ### 一维前缀和 公式: $$ s[i] = s[i - 1] + a[i] $$ 模板: ```c++ const int N = 10000 + 10; int n,m; int a[N],s[N]; int main() { scanf("%d%d",&n,&m); for ( 阅读全文
摘要:
> 化大为小 离散化的本质是建立了一段数列到自然数之间的映射关系(value -> index),通过建立新索引,来缩小目标区间,使得可以进行一系列连续数组可以进行的操作比如二分,前缀和等… 化大为小,把稀疏离散化简为稠密连续的一段 模板: ```c++ vector alls; // 存储所有待离 阅读全文
摘要:
求$a^n$: 传统做法:$a \times a \times ...\times a$,时间复杂度O(n) 快速幂算法: $5^{13} \to 5 \times 5^6 \times 5^6 \to 5 \times 15625 \times 15625$ 复用相同的数 $2^8 \to (2^ 阅读全文
摘要:
## 二分查找 ### 要求 数据是有序且单调的 ### 模板 从左到右 ```c++ while (l > 1; //(l+r)/2 if (check(mid)) r = mid; // check()判断mid是否满足性质 //arr[mid] >= x else l = mid + 1; } 阅读全文
摘要:
## 递归 递归的基本思想是某个函数直接或者间接地调用自身,这样原问题的求解就转换为了许多性质相同但是规模更小的子问题。求解时只需要关注如何把原问题划分成符合条件的子问题,而不需要过分关注这个子问题是如何被解决的。 递归代码最重要的两个特征:结束条件和自我调用。自我调用是在解决子问题,而结束条件定义 阅读全文
摘要:
> 高效地存储和查找字符串集合的数据结构 1. 根节点不包含字符,除根节点外的每一个子节点都包含一个字符。 2. 从根节点到**某一个节点**,路径上经过的字符连接起来,为该节点对应的字符串。 3. 每个节点的所有子节点包含的字符互不相同。 通常在实现的时候,会在节点结构中设置一个标志,用来标记该结 阅读全文
摘要:
>KMP算法是一种**字符串匹配**算法,可以在 O(n+m) 的时间复杂度内实现两个字符串的匹配 KMP算法通过记录**相等前后缀的最大长度**使得匹配串上的指针不回溯,并且快速跳过不匹配区域 其中最主要的是模式串中个个位置的公共(相等,~~公共这两个字搞得我迷糊了半天~~)前后缀的最大值,它将是 阅读全文
摘要:
## 通过数组模拟 ### 栈 ```c++ int stk[N], top; void init() { // 初始化 top = 0; } bool isEmpty() { // 判断是否为空 return top == 0; } bool isFull() { return top >= MA 阅读全文
摘要:
哈希表 CSDN 哈希表的作用 哈希表是在键和值之间通过散列函数建立对应关系,将一个庞大的值域映射到一个比较小的空间,并使得元素的查找可以以\(O(1)\)的效率进行 例将\(0\sim 10^9 \to 0\sim 10^5\) \[Loc(i) = Hash(key_i) \] 常见的散列函数 阅读全文
摘要:
又名优先队列 堆由完全二叉树构成,其每个节点都有一个键值,且每个节点的键值都大于等于/小于等于其父亲的键值 每个节点的键值都大于等于其父亲键值的堆叫做小根堆,否则叫做大根堆。STL 中的 `priority_queue` 其实就是一个大根堆 我们模拟的是**小根堆**,下标从1开始 1是根节点,令$ 阅读全文
摘要:
1. 将两个集合合并 2. 询问两个元素是否在一个集合当中 基本原理:每个集合用一棵树表示,树根的编号就是整个集合的编号。每个节点储存它的父节点,p[x]表示x的父节点 判断树根(属于那个集合)`if (p[x] == x)` 求x的集合编号:`while(p[x] != x) x = p[x];` 阅读全文
摘要:
## 评测指标 ### 预测准确度 #### 评分预测 预测用户对物品的评分 ${r_{ui}}$ = 用户u对物品i的实际评分 ${\hat r_{ui}}$ = 推荐系统给出的预测评分 RMSE(均方根误差) MAE(平均绝对误差) $$ RMSE\ =\ \sqrt {\frac{{{\sum 阅读全文
摘要:
## 定理 若m为正整数,如果两个整数a和b满足(a-b)能够被m整除,即(a-b)$\div$ m得到一个整数,那么就称整数**a与b对模m同余**,记作`a≡b(mod m)` **两个数的和,差,积的余数等于余数的和,差,积** 因为多个数可以分解为多步两个数的运算,所以以上结论在多个数的情况 阅读全文
摘要:
质数: 在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数 合数:在大于1的整数中除了能被1和本身整除外,还能被其他数(0除外)整除的数 约数(因数) :能够将一个数整除的数 质因数:能够将一个数整除的质数 互质:公约数只有1的两个整数 ## 质数 质数:在大于1的整数中,如果只包含1和本 阅读全文