zoukankan      html  css  js  c++  java
  • 555 div3 C2. Increasing Subsequence (hard version) 贪心

      给出一个序列 可以从最左或者最右取数  要求取得数呈递增

    求出最多取多少个数  并输出操作

    贪心即可

    遇到一大一小显然取小的

    当左右等值的时候  显然选择一方就不能再选另一方了 

    然后只能选择一方无脑往中间怼即可 比较一下即可

    #include<bits/stdc++.h>
    using namespace std;
    //input by bxd
    #define rep(i,a,b) for(int i=(a);i<=(b);i++)
    #define repp(i,a,b) for(int i=(a);i>=(b);--i)
    #define RI(n) scanf("%d",&(n))
    #define RII(n,m) scanf("%d%d",&n,&m)
    #define RIII(n,m,k) scanf("%d%d%d",&n,&m,&k)
    #define RS(s) scanf("%s",s);
    #define ll long long
    #define pb push_back
    #define CLR(A,v)  memset(A,v,sizeof A)
    //////////////////////////////////
    #define inf 0x3f3f3f3f
    const int N=(int)2e6+5;
    
    string ans;
    int n,a[N];
    int main()
    {
        RI(n);rep(i,1,n)RI(a[i]);
        int L=1,R=n;
        int now=0;
    
        while(L<=R)
        {
            if(a[L]<a[R]&&now<a[R])
            {
                if(a[L]>now)
                ans+='L',now=a[L],L++;
                else if(now<a[R])
                ans+='R',now=a[R],R--;
            }
            else if(a[L]>a[R]&&now<a[L])
            {
                if(now<a[R])
                ans+='R',now=a[R],R--;
                else if(now<a[L])
                ans+='L',now=a[L],L++;
            }
            else if(a[L]==a[R]&&a[L]>now)
            {
                int l=0,r=0;
                while( L+l+1<=n&&a[L+l]<a[L+l+1] )l++;
                while( R-r-1>=1&&a[R-r-1]>a[R-r] )r++;
                l++,r++;
                if(l<r)
                    while(r--)ans+='R';
                else while(l--)ans+='L';
    
                break;
            }
            else break;
        }
        cout<<ans.size()<<endl<<ans;
    
    
        return 0;
    }
    View Code
  • 相关阅读:
    Sublime Text 在同一窗口同时显示多个项目文件夹
    前端之PS切图
    Sublime Text 菜单栏消失问题
    php中的排序算法
    vim 108上下左右键失效?
    写一个自己的markdown解析器
    2016.年末总结
    闭包
    JavaScript事件委托
    const参数,const返回值与const函数
  • 原文地址:https://www.cnblogs.com/bxd123/p/10872527.html
Copyright © 2011-2022 走看看