题目链接:https://loj.ac/problem/6281
题目大意:中文题目
具体思路:具体的优化就是判断当期你的区间如果为1或者0的话,再开根就没有变化了,这样就不需要开根了,判断每一个块是否需要开根。
AC代码:
1 #include2usingnamespace std; 3 # define lllonglong 4constint maxn = 2e6+100; 5constint inf =0x3f3f3f3f; 6ll l[maxn],r[maxn],belong[maxn]; 7ll add[maxn],a[maxn],sum[maxn]; 8bool flag[maxn]; 9int n; 10void buildblock() 11{ 12 ll tmp=(ll)sqrt(n); 13 ll tot=n/tmp; 14if(n%tmp) 15 tot++; 16for(ll i=1; i