T1签到

显然答案是

1Πi=1n(1pi)1-\Pi_{i=1}^{n}\left(1-p_{i}\right)

注意当n=0n=0的时候,被砸到的概率为00

T2法法

显然答案就是

(i=1n[2i]×(n1)!)mod2={1n=11n=20n>2\left(\sum_{i=1}^{n}[2 \nmid i] \times(n-1) !\right) \bmod 2= \begin{cases}1 & n=1 \\ 1 & n=2 \\ 0 & n>2\end{cases}

T3红球进黑洞

对于k{0,1}k \in\{0,1\}的部分,提示大体思路应该是是逐位考虑,也就是说对于某一位,只需要知道有多少个元素在这里一位是1就行了,然后乘以相应的2的若干次幂。

T4树上求和

搞出来dfsdfs序列后,子树是一段连续的区间,因此是个序列问题,小学老师告诉我们,(xi+a)2=xi2+a2+2axi\left(x_{i}+a\right)^{2}=x_{i}^{2}+a^{2}+2 a x_{i},显然可以线段树维护,那么你就切掉这道题了。

##T5换个角度思考

查询区间小于等于某个数的个数,如果强制在线的话要写主席树之类的...

然而允许离线,那么可以直接用套路做题了

首先把询问(I,r,k)(I,r, k)拆成(1,r,k)(1,r, k)(1,11,k)(1,1- 1,k),同时打上对答案产生贡献的标记(前者是11,后者是1-1)

那么现在问题就成了:查询前缀小于等于kk的个数

把所有询问按照右端点(实际上是rr)排序,然后转化为-开始给定一个空序列, 每次往序列末端添加一个数,同时支持查询这个序列小于等于kk元素个数

数据范围才10510^5,树状数组维护一下就好了。

##T6暴力出奇迹

不妨看数据范围猜题解

111 \sim 1

n10,ai105n \leq 10, a_{i} \leq 10^{5}

发现nn很小,不妨暴力枚举区间,然后更新最大值

注意ai105a_i≤10^5,也就是说答案可以到达101010^{10}级别,所以你应该使用long long 这种数据类型

222 \sim 2

n105,i,j[1,n],ai=ajn \leq 10^{5}, \forall i, j \in[1, n], a_{i}=a_{j}

发现每个数都一模一样,那么选择的区间就是[1,n][1,n]

333 \sim 3

n105,ai=in \leq 10^{5}, a_{i}=i

迷之部分分,出题人并没想怎么做

444 \sim 4

200n105,i[1,100],ai200 \leq n \leq 10^{5}, \forall i \in[1,100], a_{i} 是随机数, j[101,n],aj=0\forall j \in[101, n], a_{j}=0

发现[101,n][101, n]实际上没啥用,也就是说成了一个n100n≤100的问题,O(n2)O(n^2 )就行

5105 \sim 10

不妨看一下最大值:105×(105×105)=101510^{5} \times\left(10^{5} \times 10^{5}\right)=10^{15}

用 long long 存一下就好

如果固定右端点,然后往左扩展,那么取值只有O(logV)O(log V)种,其中VV是最大值

证明

不妨拆位考虑,每一位只会从11变为00,或者保持00,因此只有O(logV)O(log V)种取值

那么从左往右枚举右端点,对于每一个值, 维护最左侧的端点就好了

##T7简单

前置技能

森林中连通块个数的TT存在等式: T=nmT = n-m

证明:每添加一条边,就会合并两个连通块,相应的,连通块的个数就会少一个

根据期望的线性性,可得:E(T)=E(n)E(m) E(T)= E(n)- E(m)

于是问题就转化为了计算E(n)E(n)E(m)E(m)

为了方便起见,设PuP_u表示uu的存在的概率

于是对PuP_u做前缀和数组SpS_p后,可得,E(n[l,r])=Sp,Spl1E\left(n_{[l, r]}\right)=S_{p,}-S_{p_{l-1}}

之后只需要考虑E(m)E(m)如何计算,显然有:

E(m[l,r])=(u,v)Eω[l,r]n[l,r]pupvE\left(m_{[l, r]}\right)=\sum_{(u, v) \in \mathbb{E} \wedge \omega \in[l, r]} \sum_{n \in \in[l, r]} p_{u} \cdot p_{v}

于是可以暴力的把每一条(u,v)E(u, v) \in \mathbb{E}的边看成一个点 (u,v)(u,v),它的权值是pupvp_{u}{ }^{*} p_{v}

之后相当于询问一个矩形内的点的权值和,这显然就是一个二 维数点问题,可以使用离线后树状数组主席树树套树乱搞

T8论如何出一道水题

对于相邻的两个数字x,x+1x,x+ 1来说,有:

gcd(x,x+1)=gcd(x+1x,x)=gcd(1,x)=1\operatorname{gcd}(x, x+1)=\operatorname{gcd}(x+1-x, x)=\operatorname{gcd}(1, x)=1

所以答案就是:

n+max(n1,1)n+\max (n-1,1)

T9给给

根据期望的线性性,可得知E(U)=i=1n1×p(i)E(U)=\sum_{i=1}^{n} 1 \times p(i)

也就是说只需要计算每一个点至少被选中一次的概率就行了,设第ii个点的这个概率为p(i)p(i)

然而这个不太好算,不妨算另一个东西

q(i)q(i)表示第ii个点,在这kk次选择中都没有被染色的概率,因为p(i)p(i)q(i)q(i)是互斥事件, 所以p(i)+q(i)=1p(i) +q(i)=1,即 p(i)1q(i)p(i)-1- q(i)

kk次都没有被染色的意义是,每次都不会选择跨过这个点的路径,这个可以通过一次dfs计算每个节点的size后乘一 乘就行了

于是就做完了

T10 div.2A

(t+k1k1)=(t+k1t)=(t+k1)!t!(k1)!\left(\begin{array}{c}t+k-1 \\ k-1\end{array}\right)=\left(\begin{array}{c}t+k-1 \\ t\end{array}\right)=\frac{(t+k-1) !}{t !(k-1) !}

由于t2(n)t \leq \log _{2}(n),因此可以直接预处理后再做

时间复杂度:O(n)O(n)

其他疑问可加以下交流群(加入一个即可啦~)

牛客多校算法训练营1:453799454

牛客全国算法训练营2:330766563

牛客多校算法训练营3:934889305