链接
题解
考虑线段树,显然区间开平方是不能用的,所以我们选择暴力修改。
先证明一个引理,区间最大值为的区间进行修改是没有意义的。(这个证明算是补了一个坑)
证明:由于区间内所有数是正整数,所以区间最大值为的区间内所有数均为,而,故修改区间内的值没有意义,证毕。
于是我们考虑在修改区间时判断一下当前区间最大值是不是,如果是,就没有修改的必要。如果这个节点的左右端点重合,直接修改即可,这样可以少修改许多修改了也没用的区间,至于查询还是一样的。
提醒大家有多组数据,记得初始化
代码
1 |
|
技不如人,被吊打
考虑线段树,显然区间开平方是不能用的,所以我们选择暴力修改。
先证明一个引理,区间最大值为的区间进行修改是没有意义的。(这个证明算是补了一个坑)
证明:由于区间内所有数是正整数,所以区间最大值为的区间内所有数均为,而,故修改区间内的值没有意义,证毕。
于是我们考虑在修改区间时判断一下当前区间最大值是不是,如果是,就没有修改的必要。如果这个节点的左右端点重合,直接修改即可,这样可以少修改许多修改了也没用的区间,至于查询还是一样的。
提醒大家有多组数据,记得初始化
1 | #include<bits/stdc++.h> |