pku1887 最长不上升子序列

本文介绍了一种使用单调队列求解最长单调不上升子序列的方法。通过维护一个单调递减的队列,对于每个新元素,找到合适的位置插入,并确保队列的长度即为最长子序列的长度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

恩,纯水。。高一的时候连平方都不知道,只知道nlogn,后来才知道平方的,额,果然是dp菜。

题目大意:

  给你一列数,求单调不上升子序列,以-1结尾。

简略题解:

  用单调队列维护这个序列,如果这个数比队尾数<=那么直接插到队尾。如果比队尾数大,那么可以往前找到第一个比这个数大的数,插到它后面,最后队列的长度就是答案。

  至于这个算法为什么是对的,我想这个算法本身就是很好的证明吧(很多人问过,可是我太菜了。。)。

附程序:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值