A

拓扑排序最长路

B

模拟水题

C

线段树,维护遇到\(0\)个,\(1\)个,\(2\)个和\(3\)个以上的情况

D

看数据范围直接无脑搜索

E

正解是单调队列,回头再补,我写的二维\(st\)表加滚动数组,细节一车没调出来

F

随便推推有

\[ans=\sum_{i=l}^{r}\sum_{j=i+1}^{r}a_i*a_j \]

\[=\sum_{i=l}^{r}a_i\sum_{j=i+1}^{r}a_j \]

\[=\sum_{i=1}^{r}a_i*(s_r-s_{i}) \]

\[=s_r\sum a_i-\sum a_i*s_i \]

维护区间和,区间\(a_i*s_i\)和就行了

由于询问都在修改后,可以做到线性

G

差分,给\(l,r+1\)用两个数组记录分别表示出生和死亡,算\(r\)之前出生的颜色数减去\(l-1\)之前死亡的颜色数,树状数组就能做

H

\[\frac{n(n+1)}{2} \]

相关文章: