zoukankan      html  css  js  c++  java
  • CF269B Greenhouse Effect (dp LIS)

    题目吓死人系列,这一串浮点位置看哭我,后来仔细读题,发现题目问的是,最少经过多少次移动能将序列排成非严格单调递增

    为什么是这样的呢,因为他想要分m个区域,并且要求每个i种类都位于i区域,那么只能把所有的排成非严格递增才行

    那这道题就简单了,其实就是求LIS,之后用总数减一下就行,这里我使用的是nlogn的栈模拟,不知道n^2能不能过

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<map>
    #include<algorithm>
    #include<queue>
    #include<set>
    #define ull unsigned long long
    using namespace std;
    typedef long long ll;
    typedef pair<int,int> pll;
    const int N=1e5+10;
    int f[5010][5010];
    int a[N];
    vector<int> num;
    int main(){
        int n;
        int m;
        int i;
        cin>>n>>m;
        for(i=1;i<=n;i++){
            double x;
            scanf("%d%lf",&a[i],&x);
        }
        num.clear();
        num.push_back(a[1]);
        for(i=2;i<=n;i++){
            if(a[i]>=num.back())
                num.push_back(a[i]);
            else{
                int pos=upper_bound(num.begin(),num.end(),a[i])-num.begin();
                num[pos]=a[i];
            }
        }
        int ans=n-(int)num.size();
        cout<<ans<<endl;
        return 0;
    }
    View Code
  • 相关阅读:
    Java内存模型
    Redis的复制特性
    Redis数据持久化
    Java的三种代理模式
    设计模式—模板方法模式
    设计模式—观察者模式
    web性能优化之:no-cache与must-revalidate深入探究
    JWT
    数值每三位加逗号
    Webpack 打包优化之速度篇
  • 原文地址:https://www.cnblogs.com/ctyakwf/p/12637480.html
Copyright © 2011-2022 走看看