最长上升子序列的教训———一失足成千古恨系列1

错误记录:

RE*4

WA*4

AC*1

一开始数组开小了,还以为是TLE

改过来后,发现查找不是二分。现场百度结果漏了个"="又wa了四次,所以大家千万不要学我,一定要细心细心再细心!!!

由于并不理解线段树是个神马,所以用long long ago做导弹拦截时的思想做这道题

思想神马的不多说,详情请见千叶繁华大佬的导弹拦截题解

 

这里好好讲讲二分查找(一开始手写发现是O(n)的)

int  xunzhao(int u)
{
   int l=0,r=len;
   while(r>l)//l必须是左端点,r必须是右端点
   {int mid=(l+r)/2;
     if(d[mid]>=a[u])//如果这里不加“=”,就会把比a[u]大的最小的d[i]更新为a[u],但是我们不确定d[i-1]是否等于a[u]。如果是,那么这样错误更新后的d就不是一个严格上升的序列了。
     {r=mid;
     }
     else l=mid+1;//这里为了保证下一个二分点向下取整,才让r=mid,l=mid+1
   }
   return l;
}

 吐槽:上次文件名取错了,爆0,这次freopen拼错了,爆0,下次又会是怎样的爆0呢?

posted @ 2019-04-30 19:52  千载煜  阅读(182)  评论(0编辑  收藏  举报