codeforces gym 100553I
2024-08-23 22:11:14
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;
}
最新文章
- swfit-学习笔记(数组的使用)
- PowerDesigner PDM生成sql脚本时:表的名称和表里面的字段名称都有引号解决。。。
- LeetCode123:Best Time to Buy and Sell Stock III
- Swift3.0语言教程获取字符串长度
- NHibernate系列文章二十六:NHibernate查询之SQL Query查询(附程序下载)
- 一份完整的nginx配置
- 为什么JS动态生成的input标签在后台有时候没法获取到
- thinkphp实现短信验证注册
- WebService:The remote server returned an error: (400) Bad Request
- maven GroupID和ArtifactID填什么
- [置顶] ※数据结构※→☆线性表结构(stack)☆============栈 序列表结构(stack sequence)(六)
- bootstrap IE8 相互兼容
- 软件工程HW1-四则运算软件
- C# 木马功能的简单实现
- 使用 Node.js 搭建API 网关
- Quartz的基本使用之入门(2.3.0版本)
- Git 的 WindowsXP安装
- ASP.NET 预编译笔记
- thinkphp5.0 配置
- am335x文件系统 /etc/fstab的设置
热门文章
- Elastic Stack 安装
- vue学习之路 - 2.基本操作(上)
- POJ 2406 Power String
- 【组合数学】cf660E. Different Subsets For All Tuples
- mysql基础,DISTINCT关键字
- js动态刷新时间
- 新装NGINX重启,出现错误 nginx: [error] open() ";/usr/local/nginx/logs/nginx.pid";
- GBK UTF8 GB2132
- poj1142 Smith Numbers
- 【File】文件操作(初识文件操作一)