zoukankan      html  css  js  c++  java
  • HDU 6197 array array array 2017沈阳网络赛 LIS

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6197

    题意:给你n个数,问让你从中删掉k个数后(k<=n),是否能使剩下的序列为非递减或者非递增序列

    解法:签到题,就是让你求最长不下降子序列长度len,然后判断下n-len是否小于k(将序列反着存下来然后再求即最长不上升子序列,取两者len中的较大值),然后直接套nlogn的模板即可。

    #include <bits/stdc++.h>
    using namespace std;
    const int maxn = 100010;
    int a[maxn], b[maxn];
    int Search(int num, int low, int high)
    {
        int mid;
        while(low<=high){
            mid=(low+high)/2;
            if(num>=b[mid]) low=mid+1;
            else high=mid-1;
        }
        return low;
    }
    int DP(int n){
        int i,len,pos;
        b[1]=a[1];
        len=1;
        for(i=2; i<=n; i++){
            if(a[i]>=b[len]){
                len++;
                b[len]=a[i];
            }
            else{
                pos=Search(a[i], 1, len);
                b[pos] = a[i];
            }
        }
        return len;
    }
    
    int main()
    {
        int T,n,k;
        scanf("%d", &T);
        while(T--){
            scanf("%d %d", &n,&k);
            for(int i=1; i<=n; i++){
                scanf("%d", &a[i]);
            }
            int len = DP(n);
            int l=1,r=n;
            while(l<=r){
                swap(a[l],a[r]);
                l++;
                r--;
            }
            len = max(len, DP(n));
            if(n-len>k){
                printf("A is not a magic array.
    ");
            }
            else{
                printf("A is a magic array.
    ");
            }
        }
        return 0;
    }
    
  • 相关阅读:
    硬件加速器为人工智能应用服务
    js 获取指定字符串个数
    js 仿微信投诉—引入vue.js,拆分组件为单个js
    css 图片波浪效果
    svg path命令
    谷歌浏览器—打断点调试页面
    js 实现加载百分比效果
    js 实现纵向轮播
    css 图片高度自适应
    js 禁止/允许页面滚动
  • 原文地址:https://www.cnblogs.com/spfa/p/7505514.html
Copyright © 2011-2022 走看看