和ZOJ 2316 差不多,不过这个是用单调队列+二分优化了,不优化过不去。
单调队列是保证里面元素是单调的,这样的话,取其中最大的值是O(1)的,如果有数比队尾元素小,就用二分查找,找到它的位置替换。
原理详见http://blog.csdn.net/Hashmat/archive/2010/09/14/5883605.aspx
我的二分写得比较纠结,改了好久才对 = =。。。
和ZOJ 2316 差不多,不过这个是用单调队列+二分优化了,不优化过不去。
单调队列是保证里面元素是单调的,这样的话,取其中最大的值是O(1)的,如果有数比队尾元素小,就用二分查找,找到它的位置替换。
原理详见http://blog.csdn.net/Hashmat/archive/2010/09/14/5883605.aspx
我的二分写得比较纠结,改了好久才对 = =。。。