小知识杂记(知识点)
lower_bound() 函数lower_bound()在first和last中的 前闭后开 区间进行二分查找,返回大于或等于val的 第一个元素 位置。 调用lower_bound之前必须确定序列为有序序列,否则调用出错。 lower_bound(val): 返回容器中第一个值【大于或等于】val的元素的iterator位置。 upper_bound(val): 返回容器中第一个值【大于】val的元素的iterator位置。 对于有序数组a【n】,lower_bound(a,a+n,x)值为第一个 【大于或等于】x的元素在数组中的下标; hash 对于字符串sh【N】其hash值可以为 for(int i=0;i<n;i++)hash=hash*base+sh[i] //base是一个小质数 hash的初始值为0; 对于查找字符串sh2中包含几个字符串sh可以进行如下操作 for(int i=0;i<strlen(sh2);i++)hs[i+1]=hs[i]*base+sh2[i]; for(int i=0;i+strlen(sh)-1< strlen(sh2);i++ )if(hash==genth(i,i+strlen(sh)))ans++; //genth(int l,int r){return hs[r+1]-po[r-l+1]*hs[l];}//po[i