1 条题解
-
0
自动搬运
来自洛谷,原作者为

chen_kun
生命绚烂,别被黑暗压垮。搬运于
2025-08-24 23:15:36,当前版本为作者最后更新于2025-05-16 17:03:22,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
题解:P12443 [NERC2023] LOL Lovers
题意分析
给你一个字符串,把它分成两个区间使得每个区间中包含至少一个字符且两个区间字符
L和O的数量不同。思路简述
时间限制 3 秒钟,再加上 的时间限制,怎么看都是暴力。
首先在输入字符串的时候把字符
L和O的数量记录起来。直接套上两层循环,第一层循环模拟在第 个字符分割,第二层循环遍历左边的区间(既第 到 个字符),把这个区间的
L和O的数量累加起来。最后用两种字符的总数减去做左区间两种字符的个数即可得到右区间两种字符的个数,再判断两边是否不等即可。代码呈现
C++
#include<bits/stdc++.h> #define int long long using namespace std; const int N=222; char a[N]; int tot_L,tot_O,n; signed main(){ ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; tot_L+=(a[i]=='L');//记录两种字符总数 tot_O+=(a[i]=='O'); } for(int i=1;i<n;i++){ int cnt_L=0,cnt_O=0; for(int j=1;j<=i;j++){ cnt_L+=(a[j]=='L');//记录左区间两种字符的数量 cnt_O+=(a[j]=='O'); } if((tot_L-cnt_L)!=cnt_L&&(tot_O-cnt_O)!=cnt_O){//判断两边两种字符是否相等 cout<<i;//符合的话直接输出结束程序 return 0; } } cout<<"-1"; return 0; }The end.
- 1
信息
- ID
- 12238
- 时间
- 3000ms
- 内存
- 1024MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者