软件测试1

Posted c-czl123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件测试1相关的知识,希望对你有一定的参考价值。

void update(int i,int l,int r,int c)

{

    if(tr[i].l==l&&tr[i].r==r)

    {

        tr[i].f=c;

        int len=(tr[i].r-tr[i].l+1);

        tr[i].hash1=fac[0][c][len];

        tr[i].hash2=fac[1][c][len];

        return ;

    }

 

    if(tr[i].f!=-1)

      down(i);

int mid=(tr[i].l+tr[i].r)/2;

 

    if(r<=mid)

    {

       update(i*2,l,r,c);

    }

    else if(l>mid)

    {

       update(i*2+1,l,r,c);

    }

    else

    {

       update(i*2,l,mid,c);

       update(i*2+1,mid+1,r,c);

    }

    tr[i]=up(tr[i],tr[i*2],tr[i*2+1]);

}

 

 

Acm数据结构线段树中的update操作,用于更新节点信息

更新区间 当前节点的区间 容易混淆,曾经有个错是

 int mid=(tr[i].l+tr[i].r)/2; 错写成

   Int mid=(l+r)/2;

 

由于线段树内部过程不太直观,导致了难以查找的错误,最后还是反复的看代码,甚至对比正确的线段树代码来寻找问题。

 

以上是关于软件测试1的主要内容,如果未能解决你的问题,请参考以下文章