T1:
有一个区间,将一个区间[l,r]分裂为若干个区间(可有间隙)(允许区间与下一个区间相交1长度),使得价值若干个区间的ar−ala_r-a_lar−al的和最大
操作:
1.询问分裂[l,r]区间的价值
2.将[l,r]变为等差数列
n,m<=200000
一开始想到将大区间划分为一堆递增区间,然后用类似于分块的处理方法处理,后来觉得不一定对,而且处理下降序列比较复杂,还比较慢……
根本就没写完
由于ar−al=−al+al+1−al+1+……+ara_r-a_l=-a_l+a_{l+1}-a_{l+1}+……+a_rar−al=−al+al+1−al+1+……+ar
就可以将分裂的区间长度固定在2
设bi=max(ai−ai−1,0)b_i=max(a_i-a_{i-1},0)bi=max(ai−ai−1,0),即如果价值为负,则可记为0,即不选
则操作1为∑i=l+1rbi\sum_{i=l+1}^{r}b_i∑i=l+1rbi 区间加法
操作2为区间修改,因为bib_ibi就是两数的差,而等差数列就是“等差”,所以可以直接区间覆盖修改,额外单独处理两端点处就可以了
用一个线段树维护即可
T2:
求长度为2m2m2m的包含n个字符串为子串的反对称的字符串个数
本来写了个暴力dfs+暴力字符串匹配,本来以为稳拿10分,结果。。
没了
正解是一个在AC自动机上跑状压DP的
告辞
T3:
对一个矩阵染色,有黑白,至少a行b列是黑色,求方案数
一眼容斥。。但是我不会容斥
觉得暴力很有难度
告辞