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

后缀字典序中二分找查询串区间

时间:2017-12-09 15:54:26      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:bsp   二分   else   main   return   nod   字典   区间   lag   

bool cmp1(int pos,char *p)
{
    pos=sa[pos];
    int len1=n-pos+1,len2=now,l=min(len1,len2);
    int flag=strncmp(a+pos,p,l);
    return flag>0||(flag==0&&len1>=len2);
}
bool cmp2(int pos,char *p)
{
    pos=sa[pos];
    int len1=n-pos+1,len2=now,l=min(len1,len2);
    int flag=strncmp(a+pos,p,l);
    return flag<=0;
}
bool ok(int pos,char *p)
{
    pos=sa[pos];
    int len=n-pos+1;
    return len>=now&&strncmp(a+pos,p,now)==0;
}
//main函数 int ql=1,qr=n,ans1=n+1,ans2=0; while(ql<=qr) { int mid=ql+qr>>1; if(cmp1(mid,b))ans1=mid,qr=mid-1; else ql=mid+1; } ql=1,qr=n; while(ql<=qr) { int mid=ql+qr>>1; if(cmp2(mid,b))ans2=mid,ql=mid+1; else qr=mid-1; } if(ans1<=ans2&&ok(ans1,b)&&ok(ans2,b)) { qu[l-1].pb(node{ans1,ans2,-i}); qu[r-now+1].pb(node{ans1,ans2,i}); }

 

后缀字典序中二分找查询串区间

标签:bsp   二分   else   main   return   nod   字典   区间   lag   

原文地址:http://www.cnblogs.com/dyzll/p/8011555.html

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