线段树中的TLE,RE杂碎问题

可引起RE(ACCESS_VIOLATION)的建树操作

{
    int k=1;
    L[1]=1;R[1]=maxn;
    for(int i=1;i<=maxn;i++)
    if (L[i]

修正

void build(int l,int r,int k)
{
    L[k]=l;R[k]=r;mid[k]=(l+r)>>1;
    v[k]=1;
    if (l

冗杂的修改操作,一念之差,

void modify(int k,int x,int y,int num)
{
    if (x>L[k]||ymid[k]) modify((k<<1)|1,max(x,mid[k]+1),y,num);
    //v[k]=v[k<<1]+v[(k<<1)|1];
}

void modify(int k,int x,int y,int num)
{

    if (v[k]==num) return;
    if (x==L[k]&&y==R[k])
    {
        v[k]=num;return;
    };
    if (v[k]) v[k<<1]=v[(k<<1)|1]=v[k];

    v[k]=0;
    if (x<=mid[k]) modify(k<<1,x,min(mid[k],y),num);
    if (y>mid[k]) modify((k<<1)|1,max(x,mid[k]+1),y,num);
    //v[k]=v[k<<1]+v[(k<<1)|1];
}


你可能感兴趣的:(ACM)