codeforces gym 100553I


solution

令a[i]表示位置i的船的编号

研究可以发现,应是从中间开始,往两边跳。。。。

于是就是一个点往两边的最长下降子序列之和减一

魔改树状数组求min

#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#define maxn 200005
using namespace std;
int n,x,a[maxn],l[maxn],r[maxn];
int tl[maxn],tr[maxn];
int al(int k){
int sum=0;
for(int i=k;i;i-=i&-i)sum=max(sum,tl[i]);
return sum;
}
void jl(int k,int v){
for(int i=k;i<=n;i+=i&-i)tl[i]=max(tl[i],v);
}
int ar(int k){
int sum=0;
for(int i=k;i;i-=i&-i)sum=max(sum,tr[i]);
return sum;
}
void jr(int k,int v){
for(int i=k;i<=n;i+=i&-i)tr[i]=max(tr[i],v);
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
scanf("%d",&x);a[x]=i;
}
for(int i=1;i<=n;i++){
l[i]=al(a[i])+1;
jl(a[i],l[i]);
}
for(int i=n;i>=1;i--){
r[i]=ar(a[i])+1;
jr(a[i],r[i]);
}
int ans=0;
for(int i=1;i<=n;i++){
ans=max(ans,l[i]+r[i]-1);
}
cout<<ans<<endl;
return 0;
}

最新文章

  1. swfit-学习笔记(数组的使用)
  2. PowerDesigner PDM生成sql脚本时:表的名称和表里面的字段名称都有引号解决。。。
  3. LeetCode123:Best Time to Buy and Sell Stock III
  4. Swift3.0语言教程获取字符串长度
  5. NHibernate系列文章二十六:NHibernate查询之SQL Query查询(附程序下载)
  6. 一份完整的nginx配置
  7. 为什么JS动态生成的input标签在后台有时候没法获取到
  8. thinkphp实现短信验证注册
  9. WebService:The remote server returned an error: (400) Bad Request
  10. maven GroupID和ArtifactID填什么
  11. [置顶] ※数据结构※→☆线性表结构(stack)☆============栈 序列表结构(stack sequence)(六)
  12. bootstrap IE8 相互兼容
  13. 软件工程HW1-四则运算软件
  14. C# 木马功能的简单实现
  15. 使用 Node.js 搭建API 网关
  16. Quartz的基本使用之入门(2.3.0版本)
  17. Git 的 WindowsXP安装
  18. ASP.NET 预编译笔记
  19. thinkphp5.0 配置
  20. am335x文件系统 /etc/fstab的设置

热门文章

  1. Elastic Stack 安装
  2. vue学习之路 - 2.基本操作(上)
  3. POJ 2406 Power String
  4. 【组合数学】cf660E. Different Subsets For All Tuples
  5. mysql基础,DISTINCT关键字
  6. js动态刷新时间
  7. 新装NGINX重启,出现错误 nginx: [error] open() &quot;/usr/local/nginx/logs/nginx.pid&quot;
  8. GBK UTF8 GB2132
  9. poj1142 Smith Numbers
  10. 【File】文件操作(初识文件操作一)