一起來解讀LIS吧!
lis加強版
title
描述 Description
有N個整數,輸出這N個整數的最長上升序列、最長下降序列、最長不上升序列和最長不下降序列。
輸入格式 Input Format
第一行,僅有一個數N。 N<=700000
第二行,有N個整數。 -109<=每個數<=109
輸出格式 Output Format
第一行,輸出最長上升序列長度。
第二行,輸出最長下降序列長度。
第三行,輸出最長不上升序列長度。
第四行,輸出最長不下降序列長度。
樣例輸入 Sample Input
10
1 3 0 8 6 2 3 1 4 2
樣例輸出 Sample Output
4
4
4
4
時間限制 Time Limitation
1s
註釋 Hint
資料生成由 zqc,heaonan,zhouhang 等人對拍而成。
來源 Source
經典例題
code
#include<bits/stdc++.h>
using namespace std;
const int maxn=7e5+10,inf=0x3f3f3f3f;
template<typename T>inline void read(T &x)
{
x=0;
T f=1,ch=getchar();
while (!isdigit(ch) && ch^'-') ch=getchar();
if (ch=='-') f=-1, ch=getchar();
while (isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48), ch=getchar();
x*=f;
}
long long ans1,ans2,ans3,ans4,a[maxn],b[maxn],c[maxn],d[maxn],e[maxn];
struct cmp
{
bool operator() (int a,int b)
{
return a>b;
}
};
int main()
{
int n;read(n);
for (int i=1;i<=n;++i)
read(a[i]);
ans1=ans2=ans3=ans4=1;
b[1]=e[1]=c[1]=d[1]=a[1];
for (int i=2;i<=n;++i)
{
if (a[i]>b[ans1]) b[++ans1]=a[i];
else if (a[i]<b[ans1]) b[lower_bound(b+1,b+ans1+1,a[i])-b]=a[i];
if (a[i]<c[ans2]) c[++ans2]=a[i];
else if (a[i]>c[ans2]) c[lower_bound(c+1,c+ans2+1,a[i],cmp())-c]=a[i];
if (a[i]<=d[ans3]) d[++ans3]=a[i];
else if (a[i]>d[ans3]) d[upper_bound(d+1,d+ans3+1,a[i],cmp())-d]=a[i];
if (a[i]>=e[ans4]) e[++ans4]=a[i];
else if (a[i]<e[ans4]) e[upper_bound(e+1,e+ans4+1,a[i])-e]=a[i];
}
printf("%lld\n%lld\n%lld\n%lld\n",ans1,ans2,ans3,ans4);
return 0;
}
相關文章
- 來一起寫一個跳錶吧
- C#9.0 終於來了,您還學的動嗎? 帶上VS一起解讀吧!C#
- 一起來學習樹鏈剖分吧!
- Flutter學習指南App,一起來玩Flutter吧~FlutterAPP
- 2023年一起來認識一下StampedLock吧
- 瀏覽器的event loop,一起來了解下吧瀏覽器OOP
- 一起努力吧,2023
- 一起來讀官方文件-----SpringIOC(02)Spring
- 一起來讀官方文件-----SpringIOC(04)Spring
- 如果你也剛入門React,來一起學習吧React
- 一起來作畫吧「GitHub 熱點速覽 v.22.14」Github
- LIS
- 進階MAC大神,只差這一步之遙!一起來學吧!Mac
- C#9.0 終於來了,您還學的動嗎? 帶上VS一起解讀吧!(應該是全網第一篇)C#
- 【模板】LIS
- abc360_G Suitable Edit for LIS 題解UI
- 提筆忘字?《夢蝶》手遊12月29日首測來襲,一起來檢驗下吧!
- 來吧,一起給小程式原生的swiper化個妝,讓她變成更漂亮點的banner吧(基於mpvue)Vue
- 解讀智慧財務,引領重塑增長 | 雲擴與您一起預見未來
- 來吧,聊聊API安全API
- 來說說mask吧
- Enumerable 下又有新的擴充套件方法啦,快來一起一睹為快吧套件
- C#9.0 終於來了,帶你一起解讀 nint 和 Pattern matching 兩大新特性玩法C#
- 來碗綠豆湯吧
- 最長上升子序列LIS 詳解+變形+擴充
- 想學嵌入式?要不一起玩 Arduino 吧UI
- 顫抖吧!一起手寫一個redux框架!Redux框架
- 程式設計師最大的底氣來自於自身的技術,不想被淘汰就一起來進階 Android吧!程式設計師Android
- 一起來養豬
- 一起來學 TypeScriptTypeScript
- 一起來打靶 02
- mac無法充電解決辦法!看來get下吧!Mac
- 讀懂「 唱吧 KTVHTTPCache 」設計思想HTTPPCA
- “改造” VS Code 編輯器,一起寫個外掛吧!
- arXiv熱文解讀 | 不懂Photoshop如何P圖?交給深度學習吧深度學習
- [招募] 加入我們一起學習 計算機數學吧計算機
- 【招募】加入我們一起學習 計算機數學吧計算機
- 我的小專欄《 Swift 遊戲開發》開始創作啦~一起來用 Swift 寫遊戲吧!Swift遊戲開發