zoukankan      html  css  js  c++  java
  • K-Stack(2021牛客暑期多校2)

    题目传送门

    分析:bi就是已知加入ai以后以ai结尾的LIS。

    先贪心地把它给的不完整的信息弄完整:
    因为不合法的情况是这次的栈的容量减上次的>1个,那么这个位置就填入pos【i-1】+1,减少不合法的可能性。
    再考虑原序列,因为是递增的构造法,那么在容量最大的位置填入最大的数,然后如果bi,bj相同(i<j),ai一定大于aj,不然bj=bi+1。

    code:

    #include<bits/stdc++.h>
    #define N 1000007
    
    using namespace std;
    
    int val[N],L[N],R[N],pos[N],ans[N];
    vector<int>v[N];
    int main(){
        int n,k;
        cin>>n>>k;
        for(int i=1;i<=k;i++){
            int p,x;
            scanf("%d%d",&p,&x);
            pos[p]=x;
        }
        for(int i=1;i<=n;i++){
            if(pos[i]){
                if(pos[i]-pos[i-1]>1){
                    cout<<-1;
                    return 0;
                }
            }
            else pos[i]=pos[i-1]+1;
            v[pos[i]].push_back(i);
        }
        int as=n;
        for(int i=n;i;i--){
            int sz=v[i].size();
            for(int j=0;j<sz;j++){
                ans[v[i][j]]=as--;
            }
        }
        for(int i=1;i<=n;i++)printf("%d ",ans[i]);
        return 0;
    }
    
  • 相关阅读:
    经验1
    Caffe和MatConvNet安装
    Matconvet的学习笔记
    CNN数据准备
    深度学习之卷积和池化
    深度学习之CNN的推导
    深度学习八(总结)
    深度学习七(卷积神经网络)
    深度学习六
    深度学习五
  • 原文地址:https://www.cnblogs.com/GUOGaby/p/15036966.html
Copyright © 2011-2022 走看看