大型运算符

大型运算符提示表达式的信息,或者表示对求值项进行某些操作。

∑ \sum :求和符号

∑ \sum 是最经典的大型运算符。
∑ \sum 符号表示求和。可能会带有上标,下标。

∑ \sum 最基础的用法是这样:
这表示枚举整数i∈[1,n],对求出所有ai的和:
大型运算符_第1张图片
在一些格式(如Latex)中难以打出上标、下标,因此也可以写成右上标、右下标的格式: ∑ i = 1 n a i \sum_{i=1}^n a_i i=1nai

这里的上标表示i<=n,而不是连续求值n项。

∑ \sum 可以有这些参数:
大型运算符_第2张图片
一般,下标指定了一个枚举下界,上标指定了一个枚举上界。
上下标都是可有可无的,但是必须要有求值项。

有时候,下标足以表示枚举范围,就没有了上标。
比如这种情况:
大型运算符_第3张图片
大型运算符_第4张图片

又比如这种:
大型运算符_第5张图片
这表示对n的所有正约数求和。重复的约数只计算一次,例如:
4的约数有{1,4},{2,2}两对,但是2只计算一次:
大型运算符_第6张图片
也就是说:
大型运算符_第7张图片
方括号是埃弗森括号,用法是[p],p是一个命题。当命题为真是,艾弗森括号的值为1,否则为0.

下标也可以不提示范围:
大型运算符_第8张图片
这往往表明在上下文中提及了求和范围,因此省略了。或者是表示对所有i∈f的定义域求和。

下标也可以指出变量,之后再追加变量的范围:
大型运算符_第9张图片
为便于处理,通常使得一个 ∑ \sum 对应一个新指出的变量:
在这里插入图片描述

下标也可以表示一个命题,表示使得此命题为真的变量求值:
大型运算符_第10张图片
∑ \sum 也可以什么都不提示:
大型运算符_第11张图片
这个式子来自数论分块,由于l、r的含义较难用符号表达,因此直接不写。

事实上, ∑ \sum 还可以直接引导一个集合:
∑ { a 1 , b 4 , c } = a 1 + b 4 + k \sum\{a_1,b_4,c\}=a_1+b_4+k {a1,b4,c}=a1+b4+k

∑ \sum 引导的式子称为和式。

∏ \prod :连乘积

大型运算符_第12张图片
这个符号表示将a的[1,n]项都乘起来,有着与 ∑ \sum 类似的用法。

其他大型运算符

这里记录了一些其他大型运算符。
集合大型运算符: ⋂ \bigcap ⋃ \bigcup
余积: ⨿ \amalg ⨿
积分符号。

定义大型运算符:

大型运算符也可以自己定义。
定义的方法是,把原有符号写大,可以写上下标。

这样就表示从序列a的[l,r]区间中取最大值:
大型运算符_第13张图片
这样就表示求[1,n]异或和:
大型运算符_第14张图片

大型运算符的作用范围

一般来说,如果没有括号,大型运算符一直计算到式子末尾。如果有括号括住大型运算符,大型运算符计算括号内的所有东西。
例如:
∑ i = 1 n a i b i + f ( i − 1 ) + 3 + ∏ j = 1 m c j = ∑ i = 1 n ( a i b i + f ( i − 1 ) + 3 + ∏ j = 1 m c j ) \sum_{i=1}^na_ib_i+f(i-1)+3+\prod_{j=1}^m c_j=\sum_{i=1}^n(a_ib_i+f(i-1)+3+\prod_{j=1}^m c_j) i=1naibi+f(i1)+3+j=1mcj=i=1n(aibi+f(i1)+3+j=1mcj)
有括号只计算自己括号内的:
( ∑ i = 1 a i ) + ( ∑ j = 1 b j ) (\sum_{i=1}a_i)+(\sum_{j=1}b_j) (i=1ai)+(j=1bj)
然而,有些时候为了简洁,如果能明确求和次序,那括号可以不写:
( ∑ i = 1 a i ) + ( ∑ i = 1 b i c i ) = ∑ i = 1 a i + ∑ i = 1 b i c i (\sum_{i=1}a_i)+(\sum_{i=1}b_i^{c_i})=\sum_{i=1}a_i+\sum_{i=1}b_i^{c_i} (i=1ai)+(i=1bici)=i=1ai+i=1bici
这里变量i被声明了两次,显然左右两个和式是并列计算的关系,而不是嵌套计算。

另一些大型运算符

为了接下来的行文简洁,我们定义 I \mathbb{I} I在这里插入图片描述表示循环记号。用法是:
I i = 1 n \overset{n}{\underset{i=1}{\mathbb{I}}} i=1In来表示按照下标顺次展开元素,比如:
I i = 1 n { a i ⋅ x i = b i ⇔ { a 1 ⋅ x 1 = b 1 a 2 ⋅ x 2 = b 2 . . . a n − 1 ⋅ x n − 1 = b n − 1 a n ⋅ x n = b n \overset{n}{\underset{i=1}{\mathbb{I}}}\left\{\begin{matrix} a_i\cdot x_i =b_i \end{matrix}\right.\Leftrightarrow \left\{\begin{matrix} a_1\cdot x_1=b_1\\ a_2\cdot x_2=b_2\\ ...\\ a_{n-1}\cdot x_{n-1}=b_{n-1}\\ a_n\cdot x_n=b_n \end{matrix}\right. i=1In{aixi=bi a1x1=b1a2x2=b2...an1xn1=bn1anxn=bn

又如:
I i = 1 m ( m i n ) ⇔ ( m 1 , m 2 , . . . , m m − 1 , m m                              n ) \overset{m}{\underset{i=1}{\mathbb{I}}}\left(_{m_i}^{n}\right) \Leftrightarrow \left(^{\;\;\;\;\;\;\;\;\;\;\;\;\;\;n}_{m_1,m_2,...,m_{m-1},m_m}\right) i=1Im(min)(m1,m2,...,mm1,mmn)

有时候有箭头表示展开方向:
I i = 1 n { ↓ a i ⋅ x i = b i ⇔ { a 1 ⋅ x 1 = b 1 a 2 ⋅ x 2 = b 2 . . . a n − 1 ⋅ x n − 1 = b n − 1 a n ⋅ x n = b n \overset{n}{\underset{i=1}{\mathbb{I}}}\left\{\begin{matrix} \downarrow a_i\cdot x_i =b_i \end{matrix}\right.\Leftrightarrow \left\{\begin{matrix} a_1\cdot x_1=b_1\\ a_2\cdot x_2=b_2\\ ...\\ a_{n-1}\cdot x_{n-1}=b_{n-1}\\ a_n\cdot x_n=b_n \end{matrix}\right. i=1In{aixi=bi a1x1=b1a2x2=b2...an1xn1=bn1anxn=bn

I i = 1 n { ↑ a i ⋅ x i = b i ⇔ { a n ⋅ x n = b n a n − 1 ⋅ x n − 1 = b n − 1 . . . a 2 ⋅ x 2 = b 2 a 1 ⋅ x 1 = b 1 \overset{n}{\underset{i=1}{\mathbb{I}}}\left\{\begin{matrix} \uparrow a_i\cdot x_i =b_i \end{matrix}\right.\Leftrightarrow \left\{\begin{matrix} a_n\cdot x_n=b_n\\ a_{n-1}\cdot x_{n-1}=b_{n-1}\\ ...\\ a_2\cdot x_2=b_2\\ a_1\cdot x_1=b_1 \end{matrix}\right. i=1In{aixi=bi anxn=bnan1xn1=bn1...a2x2=b2a1x1=b1

I i = 1 m ( m i ← n ) ⇔ ( m m , m m − 1 , . . . , m 2 , m 1                              n ) \overset{m}{\underset{i=1}{\mathbb{I}}} \left(_{\underleftarrow{m_i}}^{n}\right) \Leftrightarrow \left(^{\;\;\;\;\;\;\;\;\;\;\;\;\;\;n}_{m_m,m_{m-1},...,m_2,m_1}\right) i=1Im( min)(mm,mm1,...,m2,m1n)

后记

于是皆大欢喜。

你可能感兴趣的:(算法,数据结构)