4.26总结

t1:

看了题,思考了几分钟,发现50分很简单,70分m<=20,好像可以容斥,想想感觉还行,再看最后的数据范围,被限制的数只有300*300!!!直接dp,后面的没有限制,有可能是组合数,转换了一下模型,发现可以做,时间空间也还行,一看表还没8点,在直接开始写和继续看题中选择了直接开始写,9点多一点写完暴力+正解,放一边对拍去了

t2:

想了一会,想到了分块,莫队上,发现分块不行,感觉找个东西用回滚套一下就行,最后感觉lct应该可以(后来发现不可以),代码一定很难写,于是看第三题

t3:

看完之后毫无思路,连暴力都模糊不清,想暴力应该就有半个小时,想完就直接写了,继续想60分,发现只要优化一点就可以了,10点20,60分写完+对拍

拐回来看t2发现思路错了,只能拿30分的暴力,60分也没什么思路,40的时候,发现t3的60对拍错了,心态有点慌,赶紧打完t2的30,就去看t3的60

但是直到考试结束也没调出来

题解:

t1: 100

dp(前缀和优化)+组合数

t2:

60分:

从大到小依次加入每条边

[ l , r ] 就是 加入了所有 [ l , m ]的边后,编号不超过 r 的树边的权值之和

对于 树 结构的维护可以暴力,对于权值和的询问可以用树状数组维护

时间复杂度 O(m*n+(m+q)*logm) 

100分:线段树合并区间 时间复杂度 O((m+qlogm)*n*logn) // logn算个常数

线段树合并区间:https://www.luogu.com.cn/problem/P2572

https://www.luogu.com.cn/problem/P4198

https://www.luogu.com.cn/problem/P5618

https://www.luogu.com.cn/problem/P3569

t3:

30暴力

60 二维前缀和+二维差分

check #用二维前缀和

add 二维差分

注意加上偏移量,防止负数越界

原文地址:https://www.cnblogs.com/xsm098/p/14704702.html