题目
思路
观察到数据量比较小,因此直接模拟就好
- 难度:Medium
- 技能:模拟
代码
1 | class Solution { |
禁:自我感动
观察到数据量比较小,因此直接模拟就好
1 | class Solution { |
三角函数基本关系
诱导公式:奇变偶不变,符号看象限(原函数)
角度 | $\frac{\pi}{2}-\alpha$ | $\frac{\pi}{2}+\alpha$ | $\pi-\alpha$ | $\pi+\alpha$ | $\frac{3\pi}{2}-\alpha$ | $\frac{3\pi}{2}+\alpha$ | $2\pi-\alpha$ |
---|---|---|---|---|---|---|---|
$\sin{\theta}$ | $\cos{a}$ | $\cos{a}$ | $\sin{a}$ | $-\sin{a}$ | $-\cos{a}$ | $-\cos{a}$ | $-\sin{a}$ |
$\cos{\theta}$ | $\sin{a}$ | $-\sin{a}$ | $-\cos{a}$ | $-\cos{a}$ | $-\sin{a}$ | $\sin{a}$ | $\cos{a}$ |
$\tan{\theta}$ | $\cot{a}$ | $-\cot{a}$ | $-\tan{a}$ | $\tan{a}$ | $\cot{a}$ | $-\cot{a}$ | $-\tan{a}$ |
$\cot{\theta}$ | $\tan{a}$ | $-\tan{a}$ | $-\cot{a}$ | $\cot{a}$ | $\tan{a}$ | $-\tan{a}$ | $-\cot{a}$ |
倍角公式
半角公式
和差公式
和差化积
积化和差
方便求导
x,y为两个变量,x ∈ D,如果 x ∈ D,总存在唯一确定的y与x对应,称y为x的函数,记作 y = f(x)
D 称为定义域
R = {y| y = f(x), x ∈ D} 称为函数的值域
sgn x = -1, x < 0; 0, x = 0; 1, x > 0
D(x) = 1, x ∈ Q (有理数); 0, x ∈ R\Q
y = [x]
若函数 y=f(x) 严格单调,记 x=g(y) 为f的反函数
函数$y=f(u)$定义域为$D_f$,函数$u=g(x)$定义域为$D_g$且$g(D_g)\in{D_f}$,则$y=f[g(x)],x\in{D_g}$确定的函数称为函数$u=g(x)$和$y=f(u)$构成的复合函数
幂 指 对 三角 反三角
由常数和基本初等函数经过有限次四则运算和复合运算得到的函数
D 首先必须关于原点对称!否则就免谈
y = f(x) x ∈ D
$\forall x_1, x_2 \in D$ 且 $x_1 < x_2$,有 $f(x_1) < f(x_2)$,称$f(x)$在$D$上严格单调递增
∀ x1, x2 ∈ D 且 x1 < x2,有 f(x1) > f(x2),称f(x)在D上严格单调递减
$y=f(x),x\in{D}$
∃ M>0,对于 ∀ x ∈ D,有 |f(x)| <= M,称f(x)在D上有界
∃ M1,对于 ∀ x ∈ D,f(x) >= M1,称函数有下界 M1
∃ M2,对于 ∀ x ∈ D,f(x) <= M2,称函数有上界 M2
函数有界的充分必要条件是函数既有上界又有下界
y = f(x) x ∈ D
如果 ∃ T>0,使得 ∀ x ∈ D (x+T ∈ D),有 f(x+T) = f(x),称f(x)是具有周期性
$\forall\epsilon>0,\exist{N}>0,n>N$时,恒有$|x_n-a|<\epsilon$,则$\lim_{n\rightarrow{\infty}}x_n=a$
$\lim_{n\rightarrow{\infty}a_n=0}$和$\lim_{n\rightarrow{\infty}|a_n|=0}$互为充要条件
唯一性:数列若有极限,该极限唯一
1 | 证明数列极限唯一性 |
有界性:如果数列有极限,那么数列有界
1 | 证明数列极限有界性 |
有界的数列不一定有极限
1 | 例如 an = 1 + (-1)^n |
保号性:如果 lim(n->∞) an = A,如果A>0(或A<0),则 ∃ n> 0,n > N 时,an>0(或 an<0)0),则>
1 | 证明数列极限保号性 |
如果{$a_n$}收敛,则其任何子列{$a_{n_k}$都收敛,且极限相等}
x->a
∀ ℇ>0,∃ 𝞭>0,当 0<|x-a|<𝞭,|f(x)-A|<ℇ,称f(x)当x->a时的极限为A
记作 lim(x->a) f(x) = A
考点
x->+∞
∀ ℇ>0, ∃ X>0, x>X时, |f(x)-A| < ℇ 称lim(x->+∞) f(x) = A
x->-∞
∀ ℇ>0, ∃ X>0, x<-X时, |f(x)-A| < ℇ 称lim(x->-∞) f(x) = A
x->∞
∀ ℇ>0, ∃ X>0, |x|>X时, |f(x)-A| < ℇ 称lim(x->∞) f(x) = A
唯一性:函数有极限,极限必定唯一
1 | 证明唯一性: |
局部有界性:lim(x->a) f(x) = A, 则 ∃ 𝞭>0,M>0,0<|x-a|<𝞭 时|f(x)|<=M
1 | 证明唯一性: |
保号性:lim(x->a) f(x) = A,A>0(或者A<0),则 ∃ 𝞭>0,当 0<|x-a|<𝞭时,f(x)>0(或者f(x)<0)0),则>
1 | 取 ℇ = A/2 |
a(x)为x的函数,如果lim(x->x0) a(x) = 0,则称a(x)当x->x0时为无穷小
等价定义:∀ ℇ>0, ∃ 𝞭>0,当 0<|x-x0|<𝞭时,|a(x)-0|<ℇ 即 lim(x->x0) a(x) = 0
一些性质:
∀ M>0, ∃ 𝞭>0, 当0<|x-x0|<𝞭, 有|f(x)|>M, 称f(x)当x->x0时为无穷大,记作lim(x->x0) f(x) = ∞
∀ M>0, ∃ X>0, 当x>|X|, 有|f(x)|>M, 称f(x)当x->∞时为无穷大,记作lim(x->∞) f(x) = ∞
lim(x->x0) f(x) = 0 ==> lim(x->x0) 1/f(x) = ∞
预备知识:初等函数 无穷小
条件:x->x0, f(x0)->A, g(x)->B
x->x0时,f(x)+g(x)->A+B, f(x)-g(x)->A-B
1 | f(x) = A+a, g(x) = B+b 易证明 |
k为常数,lim(x->x0) kf(x) = kA
lim(x->x0) f(x)g(x) = AB
如果lim(x->x0) g(x) != 0,则lim(x->x0) f(x)/g(x) = A/B
多项式除法的极限,同除以最高次项(或最低次项
嵌套
an <= bn <= cn
lim(n->∞) an = lim(n->∞) cn = A
那么,lim(n->∞) bn = A
f(x) <= g(x) <= h(x)
lim f(x) = lim h(x) = A
那么,lim g(x) = A
如果$\phi{(x)}\le{f(x)}\le{g(x)}$且$\lim[g(x)-\phi(x)]=0$,$\lim{f(x)}$也不一定存在
lim(x->0) six/x = 1
推广:lim(∆->0) (sin∆)/∆ = 1lim(n->∞) (1+1/n)^n = e
推广 lim(n->0) (1+n)^(1/n) = e
lime(∆->0) (1+1/∆)^∆ = e
(1^∞) 类型的极限,一般都要往第二个重要极限凑
有界函数 乘以 无穷小 仍为无穷小
设 a->0 b->0
lim (a/b) = 0, 称a为b的高阶无穷小,记作 a=o(b)
lim (a/b) = ∞, 称a为b的低阶无穷小
lim (a/b) = k, k为常数,称a和b为同阶无穷小,如果 k=1, 那么a和b为等价无穷小 a~b
lim (a/b^k) = K, 称a为b的k阶无穷小
a->0, b->0, 则 a~b 的充分必要条件是 b = a + o(a)(高阶)
a~a1, b->b1, lim(b1/a1) = A, 那么 lim(b/a) = A。这意味着求极限可以等价无穷小替换
以下趋势均为 x->0
若$\lim_{x\rightarrow{x_0}}f(x)=f(x_0)$
若f(x)在[a,b]上有定义,f(x)在(a,b)内处处连续,f(a)=f(a+0),f(b)=f(b-0),那么称f(x)在[a,b]上连续
记作 f(x) ∈ C[a,b]
在点$x_0$的某去心领域内有定义的前提下才讨论间断点
lim(x->a) f(x) != f(a),称f(a)在x=a间断
间断点的分类:
f(x) g(x) 在x=x0连续,则f(x)+g(x)和f(x)-g(x)和f(x)g(x)在x=x0连续
若g(x0)!=0, 则f(x)/g(x)在x=x0连续
复合函数的连续性可以得到保持
复习一下,基本初等函数:幂指对三角反三角
初等函数:常数和基本初等函数经过有限次复合和四则运算得到的函数
基本初等函数在其定义域内连续
初等函数在其定义域内连续
最值定理:f(x)∈C[a,b],则f(x)在[a,b]取得到最小值m和最大值M
有界定理:若f(x)∈C[a,b],则∃k>0,使∀x∈[a,b],有|f(x)|<=k
零点定理:若f(x)∈C[a,b],f(a)·f(b)<0, 则必定存在x0∈[a,b],f(x0)=0
介值定理:若f(x)∈C[a,b],则∀n∈[m,M], 则∃𝝽∈[a,b]使得f(𝝽)=n
即介于m和M的任意值都可以被取到
TIPS:
设f(x)在$\hat{U}(x_0,\delta)$有定义,则
$\lim_{x\rightarrow{x_0}}f(x)=A$存在的充要条件是
对任何$\hat{U}(x_0,\delta)$内,以$x_0$为极限的数列{$x_n$},极限$\lim_{n\rightarrow{\infty}}f(x_n)=A$存在
十进制计数法:
Kn,Kn-1,Kn-2,…,K0,K-1,K-2,…,K-m = SIGMA (i=-m ~ n) [Ki * 10^(i-1)]
二进制: 0 1
八进制: 0 1 2 3 4 5 6 7
十六进制 0 1 2 3 4 5 6 7 8 9 A B C D E F
真值 机器数
r进制转换为十进制:所有数值乘以各自位权之和
二进制转八进制:三位为一组
二进制转十六进制:四位为一组
十进制转r进制
4个bit表示1个十进制字符
就是二进制 8421分别为位权。有6种冗余
985 = 1001,1000,0101
为了避免冗余状态的出现,进行加法可能需要+6进一位,进行减法可能需要-6
1 | 例如 |
8421基础上+3
每一位数没有固定的权值,属于是无权码
权值分别是 2 4 2 1
为了不发生歧义,规定0-4的2421码第一位为0,5-9的第一位为1
32~126 可印刷字符 其余为控制、通信字符
0~9 48(0011 0000)~ 57(0011 1001):高4位相同,低四位为8421码
A~Z 65~90
a~z 97~122
GB 2312-80
包含区位码和位 数据传输可能出现问题(可能理解为ASCII的0-31
因此,区位码和位码都加上20H,得到国标码,可以避免和控制/通信字符冲突
汉字内码 = 国标码+80H
大端:多字节数据的高字节放在低地址
小端:多字节数据的低字节放在低地址
例如编码:00 01 10 11 都是合法码字(码距为1),那么发生位错误时,就会被认为是另一个合法码字
如果增加一位校验位,编码:100 001 010 111,3bit映射到4个合法状态(码距位2),发生1bit错误时,就可以检验出来
奇校验码:整个校验码中,“1”的个数为奇数
偶校验码:整个校验码中,“1”的个数位偶数
1 | 假定最高位设置校验位 |
检错:用一种校验方案,发送方和接收方检验1的个数奇偶性
各个信息位进行模2加运算,得到的结果就是偶校验位
模2加
0^0 = 0
1^1 = 0
1^0 = 1
0^1 = 1
偶数个1异或会变成0,若干个0异或还是0,而偶校验位也应该是0,
校验:所有位进行异或运算,结果为1说明出错
思想:多位校验位,可以携带对错信息,以及错误位置。实现检查、纠正错误
假设有n位信息位,k位校验位,k需要多少才行呢?
n+k位码,每一位都可能出错,k位可以携带2^k信息,所以
2^k >= n+k+1 才可以 1代表正确的
2^k >= n+k+1
校验位的分布:校验位Pi放在海明码中2^(i-1)的位置,下标从1开始
校验位和分组内的信息位进行异或
海明码具有1位纠错能力,2位检错能力
思想:数据的发送方和接受方约定一个“除数”
K个信息位+R个校验位作为“被除数”,添加校验位后需要保证除法的余数为0
通常只讨论无符号整数而不考虑无符号小数
整个机器字长的全部二进制位都是数值位,没有符号位,相当于绝对值
表示范围:0 ~ 2^n-1
定点整数:小数点位置隐含在最后,最高位为符号位
定点小数:小数点隐含在最高位后面,最高位为符号位
尾数表示真值的绝对值,符号位 0/1 对应 正/负
机器字长n+1位的原码整数可以表示的范围是: -(2^n-1) ~ (2^n-1)
机器字长n+1位的原码小数可以表示的范围是: -(1-2^(-n)) ~ (1-2^(-n))
真值0有+0和-0两种形式
正数的反码:和原码相同
负数的反码:符号位不变,数值位全部取反
由于和原码一一对应,所以他俩的表示范围也相同
可以用加法替代减法,符号位参与运算,减少硬件开销
正数的补码:和原码相同
负数的补码:反码末位+1 考虑进位
注意:补码的真值0只有一种表示形式
[x]补 = 1,0000000 表示 x = -2^7
[x]补 = 1.0000000 表示 x = -1
小技巧:已知[x]补,求[-x]补:符号和数值位都取反,末位+1
在补码的基础上将符号位取反
注意:移码只能用于表示整数
移码可以方便地比较大小
可以用于替代乘法和除法
符号位不变,仅对数值位进行移位
算数右移:高位补0,低位舍弃。如果舍弃位为0,则相当于除以2,否则会丢失精度
算数左移:低位补0,高位舍弃。舍弃0相当于乘以2,否则会丢失
正数的反码:右移补0,左移补0
负数的反码:右移补1,左移补1
正数的补码:右移补0,左移补0
负数的补码:右移,高位补1;左移低位补0、
逻辑右移:高位补0,低位舍弃
逻辑左移:低位补0,高位舍弃
循环左移:最高位移动到最低位
带进位位的循环左移:数值位最高位进入CF,CF进入最低位
符号位参与运算
[A+B]补 = [A]补 + [B]补
[A-B]补 = [A]补 + [-B]补
小技巧:已知[x]补,求[-x]补:符号和数值位都取反,末位+1
当位数不够时,可能会发生溢出:上溢 / 下溢
只有 正数 + 正数 才可能上溢;负数 + 负数 才可能下溢
S = A + B,符号分别为 Sa, Sb, Ss
溢出的情况只有 (0, 0, 1) 和 (1, 1, 0)两种情况
真值表可以解出(数电知识)
V = SaSb(Ss)’ + (Sa)’(Sb)’Ss
V = 1 时溢出,V = 0 没有溢出
Cs表示符号位进位,C1表示最高数值位的进位
上溢:Cs = 0, C1 = 1
下溢:Cs = 1, C1 = 0
V = Cs ^ C1 (异或
V = 1 时溢出,V = 0 没有溢出
正数为00,负数为11
上溢:01
下溢:10
记 V = S1 ^ S2
V = 1 时溢出,V = 0 没有溢出
双符号位补码又称 模4补码;单符号位补码又称:模2补码
为了避免溢出,可以将短数据扩展为长数据
正整数:补0即可
负整数:原码补0,反码和补码补1
正小数:补0即可
负小数:原码和补码补0,反码补1
小技巧:已知[x]补,求[-x]补:符号和数值位都取反,末位+1
均为逻辑左移
不恢复余数
第一个操作一定是减去除数的绝对值
C语言中定点整数用“补码”存储
多字节数据在内存中一定占据连续的几个字节
大端模式:高字节放在低地址
小端模式:低字节放在低地址
阶码E表示浮点数的表示范围以及小数点的实际位置
尾数M的数值部分位数反映浮点数的精度
最终:让尾数的最高位是有效位
可以借鉴冒泡排序的思想,每次将一个最大值翻转到最后
可以发现,将未排序数组中的最大值index位置翻转到最后的操作是
1 | class Solution { |
动态规划:考虑到每走一步,结果与上一步的结果有关
定义dp[step][i][j] 表示骑士从i j出发,走了step步后还在棋盘上的概率
那么base case:dp[0][i][j] = 1。 走了0步必定停留在棋盘上
状态转移方程呢?由于八个方向都相同概率会走,因此
dp[step][i][j] = 1/8 * SIGMA(dp[step-1][newi][newj])
SIGMA表示求和。转移方程指出:走step步后还在棋盘的概率等于走出一步后,在新位置走step-1步后仍在棋盘的概率
那么代码就简单明了了
1 | class Solution { |
给你一个 m * n 的矩阵,矩阵中的数字 各不相同 。请你按 任意 顺序返回矩阵中的所有幸运数。
幸运数是指矩阵中满足同时下列两个条件的元素:
1 | 示例1: |
简单模拟即可。可以预处理一下矩阵,记录每一行的最小值和每一列的最大值。再逐个元素检查
1 | class Solution { |
给定整数 n ,返回 所有小于非负整数 n 的质数的数量。
1 | 示例1: |
数据量:0 <= n <= 5*10^6
暴力肯定超时,这里学习一下埃氏筛的做法
用一个isPrime数组标记i是否为质数,如果它是的话,就把2i 3i 4i .. 都标记为非质数
这里可以优化:对于一个质数x,应该从x*x开始标记它的倍数。2x 3x等这些数一定在x之前就被其他数的倍数标记
1 | class Solution { |
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true