给了你n,然后n个数字在一个数组中,接下来m个询问,每个询问三个数字 t,x,y,若t==0,那么修改区间[x,y]的每一个值,变为原来每个位置上的数 开根号取整,若t==1,那么对区间[x,y]求和
由于n,m,很大,所以树状数组铁定超时,若直接用线段树来做区间修改,那么也是超时,这类题目没别的方法了,静心剪枝,发现题目给的数据范围为2^63,有没有发现,2^63开根号 绝对不需要开10次,就能到1,到1以后就不需要再开了,意思就是若有某个区间[x,y]每一个点的值都为1时,这一段区间事实上是不需要处理的,怎么判断呢,简单,这个区间的和 等于 区间大小就是了,
都改好了 也不TLE了,也不WA了,但是一直RE,搞不懂,直到最后也没搞懂,最后有队友说题目给的区间 [x,y], x的值不一定比y小,所以需要判别一下,题目在交代x,y的取值范围时,确实没有说x
#include
#include
#include
#include
#include
#include
#include
#include
#include