bzoj3038 上帝造題的七分鐘2 線段樹

2021-07-26 07:55:49 字數 1046 閱讀 9820

ac通道:

線段樹是我最不熟悉的東西之一,於是找幾道題搞搞

這題就很簡單了

有乙個神奇的優化:

如果乙個結點值為0或者1就不再更新;

如果一棵樹左右兒子都不再更新,它也不再更新

#include#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

#define maxn 100010

#define file "read"

#define up(i,j,n) for(ll i=j;i<=n;i++)

#define dn(i,j,n) for(ll i=j;i>=n;i--)

namespace init

inline ll read()

while(isdigit(ch))

return x*f;

}}using namespace init;

ll n,m,a[maxn],tr[maxn<<2],vis[maxn<<2];

void build(ll l,ll r,ll p)

ll mid=(l+r)>>1;

build(l,mid,p<<1); build(mid+1,r,p<<1|1);

tr[p]=tr[p<<1]+tr[p<<1|1];

vis[p]=vis[p<<1]&vis[p<<1|1];

}void change(ll l,ll r,ll p,ll x,ll y)

ll mid=(l+r)>>1;

if(mid>=y) change(l,mid,p<<1,x,y);

else if(midr||y=r) return tr[p];

ll mid=(l+r)>>1;

return ask(l,mid,p<<1,x,y)+ask(mid+1,r,p<<1|1,x,y);

}int main()

return 0;

}

bzoj 3038 上帝造題的七分鐘2

time limit 3 sec memory limit 128 mb submit 923 solved 413 submit status discuss xlk覺得 上帝造題的七分鐘 不太過癮,於是有了第二部。第一分鐘,x說,要有數列,於是便給定了乙個正整數數列。第二分鐘,l說,要能修改,於...

BZOJ 3038 上帝造題的七分鐘2

description xlk覺得 上帝造題的七分鐘 不太過癮,於是有了第二部。第一分鐘,x說,要有數列,於是便給定了乙個正整數數列。第二分鐘,l說,要能修改,於是便有了對一段數中每個數都開平方 下取整 的操作。第三分鐘,k說,要能查詢,於是便有了求一段數的和的操作。第四分鐘,彩虹喵說,要是noip...

bzoj3038 上帝造題的七分鐘2

description xlk覺得 上帝造題的七分鐘 不太過癮,於是有了第二部。第一分鐘,x說,要有數列,於是便給定了乙個正整數數列。第二分鐘,l說,要能修改,於是便有了對一段數中每個數都開平方 下取整 的操作。第三分鐘,k說,要能查詢,於是便有了求一段數的和的操作。第四分鐘,彩虹喵說,要是noip...