| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
单调队列大家注意了:
用单调队列时, 要设一个 ans = 0 ;表示答案 ;也表示最长长度; 更表示所维护的最长队列的长度;
由最后一条得知:
当插入元素时不要将队列长度变为插入位置的坐标, 因为实际的队列长度要比这个长!
因此只能不断将队列长度增加, 而不能将队列长度 变小 ;
附一段简单代码(求最长不下降子序列):
ans = 0 ;
for (i = 1 ; i <= ; i ++ ){
head = 1 ; tail = ans + 1 ;
while (head < tail){
mid = (head + tail) >> 1 ;
if (q[mid] > w[i]) tail = mid ;
else head = mid + 1 ; }
if (tail == ans + 1) ans ++ ;
q[tail] = w[i] ; }
总结:
当不能保证该点不能被用时, 就只能将范围缩小至此;
而可以保证该点不能被用时, 就可以将此点排除在外;
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator