1 条题解

  • 1
    @ 2026-8-13 18:17:51

    使用双端队列模拟即可。

    马蜂有点shi。

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=2e5+7;
    int a[maxn];
    int main(){
        int n;
        cin>>n;
        deque<int>q;
        for(int i=1;i<=n;i++){
            int x;
            cin>>x;
            q.push_back(x);
        }
        string s;
        int ans=0,l=1,r=n,last=-1;
        while(!q.empty() && l<=r){
            bool ok1=0,ok2=0;
            if(q.front() > last)ok1=1;
            if(q.back() > last)ok2=1;
            if(!ok1 && !ok2){break;}
            if(ok1 && ok2){
                if(q.front() < q.back()){
                    s+='L';
                    ans++;
                    last=q.front();
                    q.pop_front();
                    l++;
                }
                else {
                    s+='R';
                    ans++;
                    last=q.back();
                    q.pop_back();
                    r--;
                }
                continue;
            }
            if(ok1){
                s+='L';
                ans++;
                last=q.front();
                q.pop_front();
                l++;
                continue;
            }
            if(ok2){
                s+='R';
                ans++;
                last=q.back();
                q.pop_back();
                r--;
                continue;
            }
        }
        cout<<ans<<"\n"<<s;
    }
    
    • 1

    1157C1. C1. Increasing Subsequence (easy version)

    信息

    ID
    7250
    时间
    2000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    8
    已通过
    3
    上传者