目录
【单点修改,区间查询 例题】
1.单点修改、区间查询 - hdu 1166 敌兵布阵
2.单点修改、区间查询最值 - hdu 1754 I Hate It
【hdu 1166 敌兵布阵】
【代码】
const int maxn=50000;
int n,a[maxn+10];
int sum[4*maxn+10];
void build(int k,int l,int r)
{
if(l==r)
{
sum[k]=a[l];
return;
}
int mid=l+r>>1;
build(k<<1,l,mid);
build(k<<1|1,mid+1,r);
sum[k]=sum[k<<1]+sum[k<<1|1];
}
void change(int k,int l,int r,int x,int v)
{
if(r<x||l>x) return;
if(l==r&&l==x)
{
sum[k]+=v;
return;
}
int mid=l+r>>1;
change(k<<1,l,mid,x,v);
change(k<<1|1,mid+1,r,x,v);
sum[k]=sum[k<<1]+sum[k<<1|1];
}
int query(int k,int l,int r,int x,int y)
{
if(y<l||x>r) return 0;
if(l>=x&&r<=y) return sum[k];
int mid=l+r>>1;
int res;
res=query(k<<1,l,mid,x,y);
res+=query(k<<1|1,mid+1,r,x,y);
return res;
}
int main()
{
int t; scanf(&#