HDU 5748 (Bellovin LIS)

来源:互联网 发布:淘宝代码装修教程 编辑:程序博客网 时间:2024/05/21 09:38

题目连接
nlogn求一下LIS 就好了

#include<cstdio>#include<algorithm>#include<iostream>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define LL long long#define pb push_back#define gcd __gcd#define For(i,j,k) for(int i=(j);i<k;i++)#define lowbit(i) (i&(-i))#define _(x) printf("%d\n",x)LL qsm(LL a,LL b) {    LL ans=1;    while(b) {        if(b&1)ans=ans*a;        a=a*a;        b>>=1;    }    return ans;}const int maxn = 1e5+200;const LL inf  = 1LL << 34;const LL P = 1e9+7;LL a[maxn];LL g[maxn];int d[maxn];int main() {    int T;    scanf("%d",&T);    while(T--) {        int n;        scanf("%d",&n);        for(int i=0; i<n; i++) {            scanf("%lld",&a[i]);            g[i]=inf;            d[i]=0;        }        g[n]=inf;        for(int i=0; i<n; i++) {            int k=lower_bound(g+1,g+1+n,a[i])-g;            d[i]=k;            g[k]=a[i];        }        for(int i=0; i<n; i++) {            printf("%d%c",d[i],i==n-1?'\n':' ');        }    }    return 0;}
0 0
原创粉丝点击