关于加权的LIS问题
蒟蒻Zigzag正在准备联赛......
这个算是这几天做的唯一一个值得写一写的题吧。首先LIS的N^2暴力dp应该都会写,就是F[i]=Max{F[j]}+1
那么加权的就吧后面的1换成数的权值就行了,如果优先长度的话加一些判断就行了。
那么O(nlogn)怎么写?
LIS的Nlogn应该都会写,就是记一个数组D[i]表示长度为i的LIS的末尾的最小值,可证D是单增的,所以每次找Max的时候只需要二分查找D数组就行了
或者你可以个给每个F插到树状数组里(数为横坐标,F为纵坐标),每次查找比这个数小的里面的最大F
又或者可以用单调栈什么的?我记得好像可以,不过记不清了。
那带权的怎么写?
还想记录D数组吗?如果权值和很大的话开不起那么大的数组。树状数组也是一样,没那么大的空间。
其实这东西就是一个类似三维偏序的东西,如果把原始顺序看成x,数的大小看成y,权值和值看成z,于是每次就是找x和y都小于等于当前状态的一个最大的F值,你可以用平衡树来维护,但显然有点大材小用......
于是,想到了CDQ分治这个东西。
x维分治,y维快排,然后用一个单调栈来维护F。想想为什么不能直接单调栈?因为你只能一次把x维排序,那么我们把(y,F)看成平面上的点的话,那么每次加进来我们不能保证y是递增的,就无法维护。加上分治的好处就是我们可以保证加进来的点是单增的。
栗子请看RQNOJ的一个题
关于加权的LIS问题的更多相关文章
- Lis日常维护
1.[问题]护士站打印LIs条码,出来是PDF格式的 [解决]在文件夹Client\NeusoftLis\Xml\Print.xml中把BarcodePrint Name的值改成安装的斑马打印机名(不 ...
- uva10635 LIS
Prince and PrincessInput: Standard Input Output: Standard Output Time Limit: 3 Seconds In an n x n c ...
- T1加权像(T1 weighted image,T1WI)
T1加权成像(T1-weighted imaging,T1WI)是指这种成像方法重点突出组织纵向弛豫差别,而尽量减少组织其他特性如横向弛豫等对图像的影响. 弛豫:物理用语,从某一个状态恢复到平衡态的过 ...
- Codeforces 486E LIS of Sequence 题解
题目大意: 一个序列,问其中每一个元素是否为所有最长上升子序列中的元素或是几个但不是所有最长上升子序列中的元素或一个最长上升子序列都不是. 思路: 求以每一个元素为开头和结尾的最长上升子序列长度,若两 ...
- 出操队形(LIS)
题目来源:微策略2013年校园招聘面试一面试题 题目描述: 在读高中的时候,每天早上学校都要组织全校的师生进行跑步来锻炼身体,每当出操令吹响时,大家就开始往楼下跑了,然后身高矮的排在队伍的前面,身高较 ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
- [tem]Longest Increasing Subsequence(LIS)
Longest Increasing Subsequence(LIS) 一个美丽的名字 非常经典的线性结构dp [朴素]:O(n^2) d(i)=max{0,d(j) :j<i&& ...
- 从LIS问题浅谈动态规划
今天以LIS问题切入动态规划,现在做一些简单的总结. LIS问题: http://www.cnblogs.com/Booble/archive/2010/11/27/1889482.html
- [noip科普]关于LIS和一类可以用树状数组优化的DP
预备知识 DP(Dynamic Programming):一种以无后效性的状态转移为基础的算法,我们可以将其不严谨地先理解为递推.例如斐波那契数列的递推求法可以不严谨地认为是DP.当然DP的状态也可以 ...
随机推荐
- layoutSubviews #pragma mark -
>>>layoutSubviews: layoutSubviews是对sbuviews的重新布局,比如,我们想更新子视图的位置,可以通过调用layoutSubviews方法(不能直接 ...
- FileIOUtils.java
package com.vcredit.ddcash.batch.util; import com.vcredit.ddcash.batch.autoAdvance.AutoAdvanceTask;i ...
- Jedis工具类
1.RedisCache.java package cn.itcast.mybatis.dao; import java.util.Date;import java.util.HashMap;impo ...
- 在PHP与HTML混合输入的页面或者模板中就需要对PHP代码进行闭合
PHP程序的时候会在文件的最后加上一个闭合标签,如下: <?phpclass MyClass{public function test(){//do something, etc.}}?> ...
- 将CachedRowSet中的数据转储到对象中
虽然还有很多bug,但凑合能用,就是将CachedRowSet中的数据转换成对象或List.省去了繁琐难看的一系列get/set方法. 先说调用: 注: cachedRowSet是查询的结果集 Stu ...
- 对struct和class使用大括号初始化的测试
#include <iostream> using namespace std; struct struct1{ /* struct1(){ cout<<"this ...
- Matlab里面的SVM
支持向量机是建立在统计学习理论基础之上的新一代机器学习算法,支持向量机的优势主要体现在解决线性不可分问题,它通过引入核函数,巧妙地解决了在高维空间中的内积运算,从而很好地解决了非线性分类问题. 构造出 ...
- 新功能WBS
项目名:连连看 组名:天天向上 组长:王森 组员:张政.张金生.林莉.胡丽娜 代码地址:HTTPS:https://git.coding.net/jx8zjs/llk.git SSH:git@git. ...
- 【转载】区间信息的维护与查询(一)——二叉索引树(Fenwick树、树状数组)
在网上找到一篇非常不错的树状数组的博客,拿来转载,原文地址. 树状数组 最新看了一下区间的查询与修改的知识,最主要看到的是树状数组(BIT),以前感觉好高大上的东西,其实也不过就这么简单而已. 我们有 ...
- [archlinux][hardware] 查看SSD的使用寿命
因为最近把16GB的SSD做成了HDD的cache,所以比较关系寿命问题. 使用smartctl工具. 参考:https://www.v2ex.com/t/261373 linux 下面只有 smar ...