最长不下降/不上升子序列&&最长上升/下降子序列
2024-09-01 09:25:58
最长不下降/不上升子序列&&最长上升/下降子序列
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 ;
}
最新文章
- 使用caffe训练自己的CNN
- 华为交换机sflow配置
- mysql 完整性约束
- .net/C# HttpWebRequest传送与接收参数
- IOS基础之 (十一) 内存管理 ARC
- (28)odoo中css可用颜色对照表
- Codeforces Round #328 (Div. 2) A. PawnChess 暴力
- sicily 1200欢迎提出优化方案
- Protel99se轻松入门:一些高级设置和常用技巧
- hibernate在地图的方法之一协会
- SQL SERVER 内存分配及常见内存问题(2)——DMV查询
- 安装Oracle服务端后配置注册表与PL/SQL
- mongodb 复制(副本集)
- bzoj3930[CQOI2015]选数 容斥原理
- HTTP协议、Ajax请求
- HDU 6022---MG loves set(K-D树)
- 题解 P1120 【小木棍 [数据加强版]】
- 有限状态机(FSM)的Java 学习FSM
- idea列表
- Android中通过xml改变背景及文字颜色
热门文章
- C# 选择文件夹 选择文件
- Codeforces Round #560 Div. 3
- ar9331修改flash大小和df、cat /proc/mtd的区别
- Codeforces 343D Water Tree & 树链剖分教程
- microsoft office 2010 visio激活
- windows 安装使用 Memcached
- log4j动态配置参数
- LeetCode 92. 反转链表 II(Reverse Linked List II)
- 一、基础篇--1.2Java集合-List、Set、Map区别
- ImportError: cannot import name &#39;Document&#39;