11.26总结

博主分享了自己为周六的菜鸟杯编程竞赛紧张准备的过程,主要学习了前缀和与后缀和的动态结合思想,并通过代码实现来解决相关问题。尽管在在线评测系统上遇到困难,但博主仍期待能取得满意的成绩,并坚信付出会有回报。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天上午就一节计算机课属于是整个星期最舒服的一天了

为了应对星期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 我好痛苦啊 反反复复被代码折磨。

希望菜鸟杯能取得对自己满意的成绩吧

希望所有的付出都有回报吧。

对得起自己我就不后悔。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值