CF1912L

发现一道水红题,赶紧来写题解。

数据已经说明了一切,当然直接打暴力啊。

题目的意思已经很明确了,就是让你分一个字符串,使左边和右边 OL 数量不一样就好了。

我们可以先预处理出字符串中 OL 的数量,然后暴力枚举左区间的右端点,双重循环求左区间中 OL 的数量,再用总数量减去左区间中的数量就可以得到右区间的数量,最后比较一下就好了。

代码

#include<bits/stdc++.h>
using namespace std;
int n,o,l;
string a; 
int main(){
    cin>>n;
    getchar();//注意这个细节,一定要用getchar读掉刚刚输入整数时遗留下的换行 
    cin>>a;
    for(int i=0;i<a.size();i++){//预处理出O和L的数量 
        if(a[i]=='O') o++;
        if(a[i]=='L') l++;
    }
    for(int i=1;i<a.size();i++){//暴力枚举左区间的右端点 
        int to=0,tl=0;
        for(int j=0;j<i;j++){//计算左区间中O和L的数量 
            if(a[j]=='O') to++;
            if(a[j]=='L') tl++;
        }
        if(o-to!=to&&l-tl!=tl){//判断 
            cout<<i;
            return 0;//满足条件直接结束程序 
        }
    }
    cout<<-1;//找不到输出-1 
    return 0;
}
posted @ 2023-12-22 13:18  very_easy  阅读(10)  评论(0)    收藏  举报  来源