描述

在你的帮助下,蔚蓝来到了埃及.在金字塔里,蔚蓝看到了一个问题,传说,能回答出这个问题的人就能受到埃及法老的祝福,可是蔚蓝日夜奋战,还是想不出来,你能帮帮他么?(XXX: 胡扯,教主怎么可能想不出来= _ =||)(WS这人说的=。=)
问题是这样的: 
给定一个序列<a1,a2,...,an>.求最长上升子序列(lis)p1<p2<...<pw满足a[p1]<a[p2]<...<a[pw]
例如65 158 170 299 300 155 207 389
LIS=<65,158,170,299,300,389>。

但是,现在还有一个附加条件:求出的最长上升子序列必须含有第K项。

比如,在上面的例子中,要求求出的最长上升子序列必须含有第6项,那么最长上升子序列就是:65 155 207 389。

格式

输入格式

第一行是用空格隔开的两个正整数N、K,含义同上所述.
第二行N个数,即给出的序列.

输出格式

仅有一个数,表示含有第K项的最长上升子序列的长度.

样例输入:
5 3
1 2 3 2 1
 
样例输出:
3
 
思路:将第k项左边大于等于第k项的去掉,左边小于等于第k项的去掉。
#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN=;
const int INF=0x7fffffff;
int h[MAXN],n,k;
int a[MAXN],top;
int dp[MAXN];
int lowbound(int l,int r,int val)
{
while(r-l>)
{
int mid=(l+r)/;
if(dp[mid]>=val)
{
r=mid;
}
else
{
l=mid;
}
}
return r;
}
int main()
{
cin>>n>>k;
k--;
for(int i=;i<n;i++)
{
cin>>h[i];
dp[i]=INF;
}
for(int i=;i<k;i++)
{
if(h[i]<h[k])
{
a[top++]=h[i];
}
}
a[top++]=h[k];
for(int j=k+;j<n;j++)
{
if(h[j]>h[k])
{
a[top++]=h[j];
}
}
for(int i=;i<top;i++)
{
int p=lowbound(-,top,a[i]);
dp[p]=a[i];
}
int res=lowbound(-,top,INF);
cout<<res<<endl;
return ;
}

最新文章

  1. DUBBO参数验证
  2. javascript,jQuery,trim()
  3. Java多线程 wait, notify 和 notifyAll
  4. sql 无法识别的配置节 system.serviceModel
  5. 查看Oracle执行计划的几种方法
  6. XSS 攻击在它的面前都弱爆了!
  7. 省市区三级联动JS
  8. OFBiz进阶之HelloWorld(一)创建热部署模块
  9. FJ省队集训DAY5 T1
  10. 数据库Schema两种含义~~
  11. apache+php+mysql运行环境
  12. 【linux之简介】
  13. Nginx详解四:Nginx基础篇之目录和配置语法
  14. Nginx详解三:Nginx基础篇之yum安装
  15. 使用requests模块post payload请求
  16. 克隆linux系统网卡问题
  17. &lt;Consistency&gt;&lt;of HBase&gt;&lt;CAP&gt;&lt;ACID&gt;
  18. JS 模块 p6
  19. Oracle 与 mysql 建立透明网关
  20. 安卓开发笔记——Menu菜单组件(选项菜单,上下文菜单,子菜单)

热门文章

  1. INSPIRED启示录 读书笔记 - 第3章 产品管理与项目管理
  2. 斯坦福机器学习视频笔记 Week8 无监督学习:聚类与数据降维 Clusting &amp; Dimensionality Reduction
  3. poj 1703 Find them, Catch them 【并查集 新写法的思路】
  4. struts2实现文件的上传和下载实例[转]
  5. ZooKeeper-znode概念与使用
  6. UVA 580 Critical Mass (两次dp)
  7. HDU 4004 The Frog&#39;s Games(2011年大连网络赛 D 二分+贪心)
  8. python基础2 - 运算符
  9. SQL授权语句(MySQL基本语句)
  10. 井眼轨迹的三次样条插值 (vs + QT + coin3d)