HDU 5265 序列变换 —— 最长不降子序列

来源:互联网 发布:linux 进程逻辑地址 编辑:程序博客网 时间:2024/05/21 10:59
#include <stdio.h>#include <iostream>using namespace std;int a[100005], seq[100005];int getLocation(int n, int len) {    int min = 0, max = len;    while (min < max) {        int mid = (min + max) / 2;        if (seq[mid] <= n) {            min = mid + 1;        } else {            max = mid;        }    }    return min;}int getLongestNotDescSequence(int n) {    int len = 1;    seq[0] = a[0];    for (int i = 1; i < n; ++i) {        int t = getLocation(a[i], len);        seq[t] = a[i];        if (t + 1 > len) {            len = t + 1;        }    }    return len;}int dowork() {    int n;    scanf ("%d", &n);    for (int i = 0; i < n; ++i) {        scanf("%d", &a[i]);        a[i] -= i;    }    return n - getLongestNotDescSequence(n);}int main() {    int cas;    scanf("%d", &cas);    for (int i = 1; i <= cas; ++i) {        printf("Case #%d:\n%d\n", i, dowork());    }    return 0;}


0 0
原创粉丝点击