码迷,mamicode.com
首页 > 其他好文 > 详细

软件测试1

时间:2018-03-12 21:05:40      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:过程   hash   amp   span   对比   ret   body   混淆   线段   

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

标签:过程   hash   amp   span   对比   ret   body   混淆   线段   

原文地址:https://www.cnblogs.com/c-czl123/p/8550952.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!