「CCNU21暑期第四次周赛」

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_isum_{j=i+1}^{r}a_j ]

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

[=s_rsum a_i-sum a_i*s_i ]

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

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

G

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

H

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

原文地址:https://www.cnblogs.com/knife-rose/p/15102474.html