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}
\]