由于sqrt操作会让数字极速降低,很快会降低到1,那么维护区间和以及区间最大值,最大值等于1的区间就不用管了。维护这两个信息可以用线段树或者分块实现,这里实现了一个分块。对于修改操作,直接暴力枚举所有块,如果块的最大值比1大,直接将这个块的所有元素取根号。对于查询操作,我们需要维护一个块的和信息。 #include<bits/stdc++.h> #define int long long using namespace std; using pii = pair<int,int>; const int N = 100001; const int M = 100001; ...