比赛链接

https://ac.nowcoder.com/acm/contest/15880?&headNav=www

B Binary Vector

题意

随机n个n维01向量,询问这个n个向量线性无关的概率

题解

考虑第一个向量,可以有$2^n-1$选择,你不可以选择全为0的向量

然后考虑与第一个向量线性无关的向量,可以有$2^n-2^1$个,因为第一个向量的0倍和1倍不能选。

然后考虑与第一个和第二个向量线性无关的向量,可以有$2^n-2^2$个

于是最终的方案数为$\begin{aligned}\prod_{i=0}^{n}2^n-2^i\end{aligned}$ , 考虑分母为$2^{n\cdot n}$
$$
\begin{aligned}
&\frac{\begin{aligned}\prod_{i=0}^{n-1}2^n-2^i\end{aligned}}{2^{n\cdot n}}
\&=\begin{aligned}\prod_{i=0}^{n-1}1-\frac{2^i}{2^n}\end{aligned}
\&=\begin{aligned}\prod_{i=1}^{n}1-2^{-i}\end{aligned}
\end{aligned}
$$

核心思想

蒙哥马利运算是一种新的运算,他把乘模简化为对进制数的除法,以及简单加法,这就使得乘模避开了大量的取模试除。

蒙哥马利表示法

例如$a%mod$的蒙哥马利表示法为$f(a) = a\times p% mod$,$p$是一个进制数, 我们储存$f(a)$的值,而不是a的值。

复原

于是我们很容易发现,对于蒙哥马利表示法变回普通表示法时只需要乘p对mod的逆元即可。

p的取值

蒙哥马利表示法会找一个进制数使得普通数字转化为蒙哥马利表示法,一般来说这是一个刚好大于模数的进制数。

集合论

集合论是群论的基础,群论是建立在集合论上的。

集合的基本操作

集合的交

$$
A \cap B = \lbrace x \vert x \in A \wedge x \in B \rbrace
$$

集合的并

$$
A \cup B = \lbrace x\vert x \in A \vee x \in B \rbrace
$$

集合的笛卡尔积

注意到笛卡尔积是一个二元组。
$$
A \times B = \lbrace (x,y) \vert x \in A \wedge y \in B \rbrace
$$

集合的映射

我们定义一个映射$f$满足 $f(x) = y $, 其中 $x\in A$, $y\in B$, 即映射可以把一个集合A中的元素映射到集合B中的一个元素。

可以称映射$f$作用于集合A,映射到集合B

F Fireworks

链接

https://ac.nowcoder.com/acm/contest/10272/F

题意

你想要放一个的烟花,你可以花费时间n来制作一个烟花,花费时间m点燃所有的烟花,烟花被点燃以后就释放了,但是他只有$\frac{p}{10^4}$的概率完美释放,你想完美释放至少一个烟花,那么需要的最少时间的期望是多少?

T组输入

nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial 123456docker run \-d \--name httpd \-p 8085:80 \-v $HOME/sharefile:/usr/local/apache2/htdocs/sharefile \httpd

CI/CD

持续集成、持续交付、持续部署

Continuous Integration

持续集成,即每当开发者对代码进行push,会自动化构建流水线,在流水线中进行自动化冒烟测试,进行集成测试,当测试通过,可以通过邮件的方式告知开发者。

Continuous Delivery

持续交付,当CI通过以后,流水线会自动化地将代码进行构建,并部署到类真实环境中(即测试环境、预发步环境)如果代码没有问题,可以继续手动部署到生产环境中。

Continuous Deployment

持续部署,当持续交付之后,代码即可自动化部署到生产环境。