zoukankan      html  css  js  c++  java
  • bzoj4282慎二的随机数列

    海带头又上线了QwQ~

    这是一个奇怪的lis问题

    显然一定存在一种最优答案使所有辨认不清的数都在答案中。

    【为什么呢】因为你完全可以用一个‘N’来替换一个‘K’啊QwQ~

    那么在选完所有‘N’之后,一个为‘K’的数的值val[i]就可以理解为val[i]-num,num指它之前‘N’的个数(因为是严格单调增的)

    然后就是裸的lis啦~,记得答案要加上‘N’的个数。

    #include<iostream>
    #include<algorithm>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    const int Mx=100010;
    int n,num,ans,c[Mx],f[Mx],d[Mx];
    void read()
    {
        scanf("%d",&n);int cnt=0;
        for(int i=1;i<=n;i++)
        {
            char ch;bool jud=0;
            while(scanf("%c",&ch))
            {
                if(ch=='K') { jud=1; break;}
                else if(ch=='N') { num++;break; }
            }
            if(jud==1) { scanf("%d",&c[++cnt]);c[cnt]-=num; }
        }
        n=cnt;
    }
    void solve()
    {
        memset(f,0x3f,sizeof f);
        for(int i=1;i<=n;i++)
        {
            int pos=lower_bound(f+1,f+n+1,c[i])-f;
            ans=max(ans,pos);f[pos]=c[i];
        }
        cout<<ans+num<<endl;
    }
    int main()
    {
        read();
        solve();
        return 0;
    }
  • 相关阅读:
    悬浮按钮
    C语言学习笔记
    python3之环境搭建以及基础语法
    设计模式之单例模式
    浅谈vuex
    用位运算替代js中的常见操作
    浅析Symbol
    egg.js源码解析之render()
    js的事件循环机制和任务队列
    浅谈js异步
  • 原文地址:https://www.cnblogs.com/xiaoxubi/p/6149934.html
Copyright © 2011-2022 走看看