hihocoder 1684 车队(LIS)

题目链接

hihocoder 1684

分析

 裸的LIS, 可以发现最终车队一定单调递减,那么把序列反过来其实就是求LIS了.

AC code

#include 
#define INF64 0x3f3f3f3f3f3f3f3f
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define ms(x,v) memset(x,v,sizeof(x))
using namespace std;

typedef long long LL;
typedef double Float;
typedef pair<int,int> PII;
typedef pair<int,Float> PIF;

const int maxn = 1e5+10;

int n;
int v[maxn];

int a[maxn];
int dp[maxn];

int lis()
{
    memset(dp, 0, sizeof(int)*n);
    int len = 1;
    dp[0] = a[0];
    for (int i = 1; i < n; ++i)
    {
        int pos = lower_bound(dp, dp + len, a[i]) - dp;
        dp[pos] = a[i];
        len = max(len, pos + 1);
    }
    return len;
}
int main()
{
    cin>>n;
    for(int i=1 ; i<=n ; ++i)scanf("%d",v+i );
    for(int i=0 ; i// for(int i=0 ; i
    // cout << lis()<<"\n";
    std::cout << n - lis() << '\n';
    return 0;
}

你可能感兴趣的:(算法刷题)