首页 > TAG信息列表 > P4145
洛谷 P4145 上帝造题的七分钟 2 / 花神游历各国(线段树)
传送门 解题思路 和这个题几乎一样。 这里是开方,比取模进行次数更少。次数k大约为 \(log_2(log_2n)\)。 AC代码 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; const int maxn=1e5+5; int n,m; struct node{P4145 上帝造题的七分钟 2 / 花神游历各国(线段树)
区间开平方直接上暴力即可。 因为一个数开几次就到1了。 维护一个区间最大值,当该区间最大值是1的时候直接return。 复杂度O(nlognlogn)? #include<bits/stdc++.h> using namespace std; const int maxn=1e5+100; int n,m; long long a[maxn],c[maxn<<2],mx[maxn<<2]; void build (iP4145 上帝造题的七分钟2 / 花神游历各国
【题意】区间开平方,区间求和 【分析】其实我们没有很好的维护区间开方的数据结构,不过我们可以发现开方的数量级降得很快,手动算一下,大概可以知道每个数至多开方6次,每次暴力去修改的时间复杂度是O(logn) 在实现的过程中,记录一个区间的max,当一个区间的max=1时,操作就没有意义了! 【代码P4145 上帝造题的七分钟2 / 花神游历各国
by luogu 可用于练习线段树 这里涉及到了开方操作 和 + * 不同,它的运算次数大大减小 只有大概8次操作就会到1 而1无论开多少次的方 都是1 所以可以去掉懒标了 这里的mark所记录的是区间最大值 若最大值都为1,那么也就吗,没有必要再进行计算 但是修改的话 还是需要一次到底(l==r)