Codeforces Round #651 (Div. 2) 参与排名人数14559
[codeforces 1369B] AccurateLee 寻找左边界的1,右边界的0
总目录详见https://blog.csdn.net/mrcrack/article/details/103564004
在线测评地址http://codeforces.com/contest/1369/problem/B
Problem | Lang | Verdict | Time | Memory |
---|---|---|---|---|
B - AccurateLee | GNU C++17 | Accepted | 30 ms | 3900 KB |
题目大意:给定01字串,在字串中,若遇到10即可压缩为1或0,输出压缩后,在所有最短的字串中选择字典序最小的字符串输出。
样例模拟如下
10
0001111111
0001111111
位置12345678910
数值0001111111
自左往右查找,第一个1出现的位置l=4,
自右往左查找,第一个0出现的位置r=3,
不符合l
AC代码如下:
#include
#define maxn 100010
char s[maxn];
void solve(){
int n,i,l,r;
scanf("%d%s",&n,s+1);
l=r=-1;
for(i=1;i<=n;i++)
if(s[i]=='1'){l=i;break;}//寻找左边界的1
for(i=n;i>=1;i--)
if(s[i]=='0'){r=i;break;}//寻找右边界的0
if(l!=-1&&r!=-1&&l