今天上午就一节计算机课属于是整个星期最舒服的一天了
为了应对星期6的菜鸟杯 一天都在做补题
题数 5
主要学了 前缀和和后缀和的动态结合思想
#include<stdio.h>
int
main()
{
int
num;
scanf
(
"%d"
,&num);
while
(num--)
{
int
n;
char
data[300000];
int
left[300000]={0},right[300000]={0};
scanf
(
"%d"
,&n);
scanf
(
"%s"
,data);
for
(
int
i=0,j=n-1;i<n;i++,j--)
{
if
(data[i]==
'1'
)//判断字符串是1
if
(i==0)//如果下标为0也就是第一个开始是1
left[i]=1;//那么前缀1等于1就是包含了第一个
else//如果不是第一个就开始等于1
left[i]=left[i-1]+1;//那么当他满足是一时就等于前一个前缀1加自己本身
else
if
(i!=0)
left[i]=left[i-1];
if
(data[j]==
'0'
)
if
(j==n-1)
right[j]=1;
else
right[j]=right[j+1]+1;
else
if
(j!=n-1)
right[j]=right[j+1];
}
int
min=200000;
for
(
int
i=0;i<n;i++)
if
(min>right[i]+left[i])
min=right[i]+left[i];
printf
(
"%d\n"
,min-1);
}
}
但是不知道为什么过不久OJ 我好痛苦啊 反反复复被代码折磨。
希望菜鸟杯能取得对自己满意的成绩吧
希望所有的付出都有回报吧。
对得起自己我就不后悔。