【BZOJ3211】花神游历各国(线段树)
2018-02-23 11:51
375 查看
题面
BZOJ题解
线段树傻逼题对于开根操作
直接暴力进行
维护一个区间最大值,如果区间最大值<=1就不用再算了
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> #include<set> #include<map> #include<vector> #include<queue> using namespace std; #define MAX 100100 #define ll long long #define lson (now<<1) #define rson (now<<1|1) inline ll read() { ll x=0,t=1;char ch=getchar(); while((ch<'0'||ch>'9')&&ch!='-')ch=getchar(); if(ch=='-')t=-1,ch=getchar(); while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar(); return x*t; } int n,m; struct Node{ll s;ll mx;}t[MAX<<2]; void Build(int now,int l,int r) { if(l==r){t[now].mx=t[now].s=read();return;} int mid=(l+r)>>1; Build(lson,l,mid);Build(rson,mid+1,r); t[now].s=t[lson].s+t[rson].s; t[now].mx=max(t[lson].mx,t[rson].mx); } void Modify(int now,int l,int r,int L,int R) { if(t[now].mx<=1)return; if(l==r){t[now].mx=t[now].s=sqrt(t[now].mx);return;} int mid=(l+r)>>1; if(L<=mid)Modify(lson,l,mid,L,R); if(R>mid)Modify(rson,mid+1,r,L,R); t[now].s=t[lson].s+t[rson].s; t[now].mx=max(t[lson].mx,t[rson].mx); } ll Query(int now,int l,int r,int L,int R) { if(L<=l&&r<=R)return t[now].s; ll ret=0; int mid=(l+r)>>1; if(L<=mid)ret+=Query(lson,l,mid,L,R); if(R>mid)ret+=Query(rson,mid+1,r,L,R); return ret; } int main() { n=read(); Build(1,1,n); m=read(); while(m--) { int opt=read(),l=read(),r=read(); if(r<l)swap(l,r); if(opt==1)printf("%lld\n",Query(1,1,n,l,r)); else Modify(1,1,n,l,r); } return 0; }
相关文章推荐
- BZOJ 3211: 花神游历各国( 线段树 )
- BZOJ3038 && BZOJ3211 上帝造题的七分钟2 && 花神游历各国 (线段树 + 开方标记)
- [BZOJ3211]花神游历各国(线段树+区间开根)
- BZOJ3038 && BZOJ3211 上帝造题的七分钟2 && 花神游历各国 (线段树 + 开方标记)
- BZOJ 3211: 花神游历各国 线段树区间开根
- bzoj3211花神游历各国 线段树
- 【线段树】【bzoj 3211】花神游历各国
- bzoj3211 花神游历各国(线段树)
- BZOJ 3211: 花神游历各国【线段树区间开方问题】
- BZOJ 3211 花神游历各国 - 线段树
- BZOJ 3211 花神游历各国 树状数组(线段树)+优化
- 树线段BZOJ 3211(花神游历各国-线段树区间开方)
- bzoj 3211: 花神游历各国 (线段树)
- 花神游历各国 bzoj3211 线段树
- [BZOJ3211]花神游历各国(线段树)
- BZOJ 3211 花神游历各国 线段树
- 【BZOJ】3211 花神游历各国 【CODE[VS]】2492 上帝造题的七分钟2 线段树
- bzoj3211花神游历各国 线段树
- bzoj3211 花神游历各国 线段树
- BZOJ 3211-花神游历各国(线段树)