上午:
莫队算法:
以前对莫队算法的理解就是一个离线分块处理,简单了解了一下觉得没有基础也能写,但是昨天的题发现见到这样的题基本没有什么想法,于是今天重新学习,简单小总结一下吧:
首先莫队算法的时间复杂度:O((m+n)sqrt(n))
时间复杂度不大不小,大概可以处理1e5的区间*1e5的询问
这种询问有特点就是可以相邻区间进行跳转,比如已知(x,y)的状态可以O(1)知道(x-1,y),(x+1,y),(x,y-1),(x,y+1)的状态。
处理方式总的来说就是离线分块
先将区间分块,查询按照左区间的位置分块,按照区间右端点从小到大排序
然后按照公式处理即可
所以说昨天的组合数的题居然用到了莫队,很是吃惊,当时都把转移公式写到纸上了,就是死活不知道是个莫队,悲哀的我,还是得见多识广吧
hdu 4638 莫队算法教科书板子
统计连续区间的个数
移动删除数字的时候如果前后数都有,那么连续区间减少1,前后都没有,连续区间数减少1
增加数字前后都有,连续区间减少1,前后数字都没有,连续区间数增加
典型例题,比上一个题目的区间移动更为简单一些
昨天的题目:
转移:
s(n,m)=2s(n-1,m)-c(n-1,m)
s(n,m-1)=s(n,m)-c(n,m)
s(n,m+1)=s(n,m)+c(n,m+1)
因为是组合数,所以并没有看出来
下午:
先是一个数学题,老本行就很简单一发过了
然后李华健的一发假贪心,改的我心里憔悴,最后还是想到了所有的状态
接着又骗我贪心a题,各种贪心都是过百分之0,赛后发现就是一个0-1分数规划的裸题,自己只学了0-1整数规划,难受
然后有道规律题忘了把序列分开oeis一下,成功错失