蒟蒻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问题的更多相关文章

  1. Lis日常维护

    1.[问题]护士站打印LIs条码,出来是PDF格式的 [解决]在文件夹Client\NeusoftLis\Xml\Print.xml中把BarcodePrint Name的值改成安装的斑马打印机名(不 ...

  2. uva10635 LIS

    Prince and PrincessInput: Standard Input Output: Standard Output Time Limit: 3 Seconds In an n x n c ...

  3. T1加权像(T1 weighted image,T1WI)

    T1加权成像(T1-weighted imaging,T1WI)是指这种成像方法重点突出组织纵向弛豫差别,而尽量减少组织其他特性如横向弛豫等对图像的影响. 弛豫:物理用语,从某一个状态恢复到平衡态的过 ...

  4. Codeforces 486E LIS of Sequence 题解

    题目大意: 一个序列,问其中每一个元素是否为所有最长上升子序列中的元素或是几个但不是所有最长上升子序列中的元素或一个最长上升子序列都不是. 思路: 求以每一个元素为开头和结尾的最长上升子序列长度,若两 ...

  5. 出操队形(LIS)

    题目来源:微策略2013年校园招聘面试一面试题 题目描述: 在读高中的时候,每天早上学校都要组织全校的师生进行跑步来锻炼身体,每当出操令吹响时,大家就开始往楼下跑了,然后身高矮的排在队伍的前面,身高较 ...

  6. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...

  7. [tem]Longest Increasing Subsequence(LIS)

    Longest Increasing Subsequence(LIS) 一个美丽的名字 非常经典的线性结构dp [朴素]:O(n^2) d(i)=max{0,d(j) :j<i&& ...

  8. 从LIS问题浅谈动态规划

    今天以LIS问题切入动态规划,现在做一些简单的总结. LIS问题: http://www.cnblogs.com/Booble/archive/2010/11/27/1889482.html

  9. [noip科普]关于LIS和一类可以用树状数组优化的DP

    预备知识 DP(Dynamic Programming):一种以无后效性的状态转移为基础的算法,我们可以将其不严谨地先理解为递推.例如斐波那契数列的递推求法可以不严谨地认为是DP.当然DP的状态也可以 ...

随机推荐

  1. winform记事本初步实现

    public Form1() { InitializeComponent(); } private void 剪切TToolStripMenuItem_Click(object sender, Eve ...

  2. css小记(3)

    1.只有块级元素可以设置背景图,行内元素要变成块级元素才可以:2.盒子不设置宽度,只设置高度,默认为100%,并自适应屏幕大小变化,为这个盒子设置margin可以在保证margin效果的同时默认调整盒 ...

  3. WPF 程序启动显示为通知区域的图标方法

    首先需要引用  System.Windows;  System.Drawing; public partial class MainWindow : Window { public MainWindo ...

  4. linux笔记十----虚拟机网络配置

    首先,参考了博客http://blog.csdn.net/qianggezhishen/article/details/45841723,可以学会怎样确定界面类型

  5. JSONObject简介

    JSONObject简介 本节摘要:之前对JSON做了一次简单的介绍,并把JSON和XML做了一个简单的比较:那么,我就在想,如果是一个json格式的字符串传到后台,需要怎么对其处理?如果前台页面需要 ...

  6. A+B Problem III-(涉及误差)NYOJ-477

    描述求A+B是否与C相等.   输入 T组测试数据. 每组数据中有三个实数A,B,C(-10000.0<=A,B<=10000.0,-20000.0<=C<=20000.0) ...

  7. Python开发问题和解决方案汇集

    1.Sublime Text中用Tab批量替换空格Whitespace缩进:Ctrl+A全选代码,Ctrl+Shift+P打开下拉框,输入indent,找到Convert indentation to ...

  8. BizTalk开发系列(十八) 使用信封拆分数据库消息

    之前写了一篇的<BizTalk开发系列(十七) 信封架构(Envelop)> 是关于信封架构及其拆装原理的,都是理论性的内容.信封在BizTalk开发过程中最常用的应该是在读取SQL Se ...

  9. segement fault常见错误

    1.指针赋值前就用它引用内存,或释放后继续访问它的内容. 2.释放同一块内存两次.

  10. QTP功能点笔记

    1.QTP启动应用程序的几种方法 1)用SystemUtil.Run 1 SystemUtil.Run "C:\Program Files (x86)\HP\QuickTest Profes ...