题解:CF298A Snow Footprints

· · 题解

一道大水题

应该是 Special Judge 的,因为在 \texttt{RRRLLL} 的情况下可以是 1 3,也可以是 4 3。

思路

有三种可能:LLL,RRR,RRL。

为什么没有 LLR:因为你要从最左边走到最右边,那么 \text{R} 一定会被覆盖。

如果是 LLL:输出第一个 \texttt{L} 和最后一个 \texttt{L} 所在的位置。

如果是 RRR:输出最后一个 \texttt{R} 和第一个 \texttt{R} 所在的位置。

如果是 RRL:输出最后一个 \texttt{R} 和第一个 \texttt{R} 所在的位置。(当然,从最后一个 \texttt{L} 到最后一个 \texttt{R} 也可以)

代码

#include<bits/stdc++.h>
using namespace std;
int n,rs,re,ls,le;//R的开始,R的结束,L的开始,L的结束
string s; 
int main(){
    cin>>n>>s;
    s=' '+s; //从第一位开始
    for(int i=1;i<=1+n;i++){
        if(s[i]=='R'){//如果是R
            re=i;//记录结尾
            if(rs==0)rs=i;//如果前面没有,就记录在开头
        }
         if(s[i]=='L'){
            le=i;//同上
            if(ls==0)ls=i;//同上
        }
    }
    if(le==0)cout<<rs<<' '<<re;//如果只有R
    else if(re==0)cout<<le<<' '<<ls;//如果只有L
    else cout<<rs<<' '<<re;
    return 0;//完美收工~
}