gukiziana专题

codeforces 551E GukiZ and GukiZiana 分块

题意: 给你一个数列,有两种操作,第一种操作将l~r区间加上val,第二种操作是询问整个序列,是否存在val,若存在,则找出相差最远的两个val下标的差值。 没有则输出-1。 思路: 分块。 人生的第一道分块题,其实分块的概念顶容易理解的。 就是把序列分为多个长度为sqrt(n)的块。每次更新的区间更新的时候,如果是完整覆盖某个块,则直接对记录数组进行更新。对于两端的不完全覆盖的