最长不下降/不上升子序列&&最长上升/下降子序列

struct cmp1{bool operator()(int a,int b){return a>b;}};
int main()
{
while(cin>>a[++n]);
n--;
if(n==)
{
cout<<<<endl<<<<endl;
return ;
}
dp1[]=a[];dp2[]=a[];
dp3[]=a[];dp4[]=a[];
int len1=,len2=,len3=,len4=;
for(int i=;i<=n;i++)
{
if(a[i]<=dp1[len1])dp1[++len1]=a[i];//最长不上升子序列
else
{
int j=upper_bound(dp1+,dp1+len1+,a[i],cmp1())-dp1;
dp1[j]=a[i];
}
if(a[i]>dp2[len2])dp2[++len2]=a[i];//最长上升子序列
else
{
int j=lower_bound(dp2+,dp2+len2+,a[i])-dp2;
dp2[j]=a[i];
}
if(a[i]>=dp3[len3])dp3[++len3]=a[i];//最长不下降子序列
else
{
int j=upper_bound(dp3+,dp3+len3+,a[i])-dp3;
dp3[j]=a[i];
}
if(a[i]<dp4[len4])dp4[++len4]=a[i];//最长下降子序列
else
{
int j=lower_bound(dp4+,dp4+len4+,a[i],cmp1())-dp4;
dp4[j]=a[i];
}
}
cout<<len1<<endl<<len2<<endl<<len3<<endl<<len4<<endl;
return ;
}

最新文章

  1. 使用caffe训练自己的CNN
  2. 华为交换机sflow配置
  3. mysql 完整性约束
  4. .net/C# HttpWebRequest传送与接收参数
  5. IOS基础之 (十一) 内存管理 ARC
  6. (28)odoo中css可用颜色对照表
  7. Codeforces Round #328 (Div. 2) A. PawnChess 暴力
  8. sicily 1200欢迎提出优化方案
  9. Protel99se轻松入门:一些高级设置和常用技巧
  10. hibernate在地图的方法之一协会
  11. SQL SERVER 内存分配及常见内存问题(2)——DMV查询
  12. 安装Oracle服务端后配置注册表与PL/SQL
  13. mongodb 复制(副本集)
  14. bzoj3930[CQOI2015]选数 容斥原理
  15. HTTP协议、Ajax请求
  16. HDU 6022---MG loves set(K-D树)
  17. 题解 P1120 【小木棍 [数据加强版]】
  18. 有限状态机(FSM)的Java 学习FSM
  19. idea列表
  20. Android中通过xml改变背景及文字颜色

热门文章

  1. C# 选择文件夹 选择文件
  2. Codeforces Round #560 Div. 3
  3. ar9331修改flash大小和df、cat /proc/mtd的区别
  4. Codeforces 343D Water Tree & 树链剖分教程
  5. microsoft office 2010 visio激活
  6. windows 安装使用 Memcached
  7. log4j动态配置参数
  8. LeetCode 92. 反转链表 II(Reverse Linked List II)
  9. 一、基础篇--1.2Java集合-List、Set、Map区别
  10. ImportError: cannot import name &#39;Document&#39;