1. 程式人生 > >codevs_1576 最長嚴格上升子序列

codevs_1576 最長嚴格上升子序列

第一次 pre using tchar ffffff www pri dev 一點

我這算是刷水題嗎/哭笑

隨便打打nlogn的做法就水過了。

有一點要註意的是INF要開大一點

第一次沒註意,然後wa了

順便也能把這個的加強版水過。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
inline int read(){
    int t=1,num=0;char c=getchar();
    while(c>9||c<0){if(c==-)t=-1;c=getchar();}
    
while(c>=0&&c<=9){num=num*10+c-0;c=getchar();} return num*t; } const int maxn=5010; int n,a[maxn],best[maxn],ans=0; int ef(int x){ int l=1,r=ans+1; while(l<r){ int mid=(l+r)>>1; if(x>best[mid])l=mid+1; else r=mid; } return l; } inline
int min(int x,int y){return x<y?x:y;} inline int max(int x,int y){return x>y?x:y;} int main() { n=read(); for(int i=1;i<=n;i++)a[i]=read(); for(int i=1;i<=n;i++)best[i]=0x7fffffff; for(int i=1;i<=n;i++){ int t=ef(a[i]); best[t]=min(a[i],best[t]); ans
=max(t,ans); } printf("%d\n",ans); return 0; }

本文由Yzyet編寫,網址為www.cnblogs.com/Yzyet。非Yzyet同意,禁止轉載,侵權者必究。

codevs_1576 最長嚴格上升子序列