2011年8月14日

单调队列:基础

摘要: 所谓单调对列,就是一个队列,其中元素是单调递增的或是单调递减的嘛。一般用来优化动态规划,因为决策总是取最优值,所以取出元素的时候只需要拿队首或队尾就行了,插入/删除元素的时候要从队首、队尾调整。均摊的效率是O(1),因为每个元素最多进出1次。 单调队列很经典的一个应用是最长不下降子序列的优化。具体的就不多说了,详细的分析网上到处是。 这里贴三道单调队列的基础题。第三题据说很经典。 RQ208/* ... 阅读全文

posted @ 2011-08-14 23:40 oa414 阅读(1025) 评论(0) 推荐(0) 编辑

Treap:查找第k大元素

摘要: 线段树、树状数组虽然查找第k大元素很方便,树状数组代码更是相当短。但是,两者必须要求数据为一定范围内的整数,否则就不能用区间和来查找第k大元素了。所以,学习用BST查找第k大元素是很有必要的。下面给出代码,Pascal版本的Treap查找第k大元素,写得很丑。{小根堆实现,支持插入、删除、findkth等操作,其它的什么findmin什么的应该不难。主要是要维护一个size和cnt域,另外每次旋转... 阅读全文

posted @ 2011-08-14 23:29 oa414 阅读(779) 评论(0) 推荐(0) 编辑

导航