• 洛谷 P3902 递增


    题目描述

    现有数列A_1,A_2,cdots,A_NA1,A2,,AN,修改最少的数字,使得数列严格单调递增。

    输入输出格式

    输入格式:

     

    第1 行,1 个整数N

    第2 行,N 个整数A_1,A_2,cdots,A_NA1,A2,,AN

     

    输出格式:

     

    1 个整数,表示最少修改的数字

     

    输入输出样例

    输入样例#1: 复制
    3
    1 3 2
    输出样例#1: 复制
    1

    说明

    • 对于50% 的数据,N le 10^3N103

    • 对于100% 的数据,1 le N le 10^5 , 1 le A_i le 10^91N105,1Ai109

    思路:n-最长严格上升子序列。

    看数据范围,要用nlogn的求法。

    如果有不会用nlogn的方法求的,可以戳这里

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define MAXN 100010
    using namespace std;
    int n,maxn;
    int a[MAXN],f[MAXN];
    int main(){
        memset(f,-127,sizeof(f));
        scanf("%d",&n);
        for(int i=1;i<=n;i++)    scanf("%d",&a[i]);
        for(int i=1;i<=n;i++){
            if(a[i]>f[maxn]) f[++maxn]=a[i];
            else if(a[i]<f[maxn]){
                int l=1,r=maxn;
                while(l<=r){
                    int m=(l+r)/2;
                    if(a[i]<f[m]) r=m-1;
                    else if(a[i]==f[m])  break;
                    else l=m+1;
                }
                if(f[l]>a[i]) f[l]=a[i];
            }
        }
        printf("%d",n-maxn);
    }
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    浮动float 摆放位置
    边框(border)宽度样式颜色 和基本属性
    调用css文件,进行调色
    deque_01
    iterator_教程中的讲解
    vector_01
    VS2013_CodeLens
    Qt for Embedded Linux
    jsjl_for_ubuntu12.04
    VC6_导入lib库
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/8029637.html
Copyright © 2020-2023  润新知