51nod官网_51nod题难度

51nod官网_51nod题难度1396 还是01串基准时间限制:1 秒空间限制:131072 KB分值: 20 难度:3级算法题 收藏 关注给定一个0-1串s,长度为n,下标从0开始,求一个位置k,满足0<=k<=n,并且子串s[0..k-1]中的0的个数与子串s[k..n-1]中1的个数相等。注意:(1)如果k=0,s[0..k-1]

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

基准时间限制:1 秒 空间限制:131072 KB 分值: 20 
难度:3级算法题

51nod官网_51nod题难度 收藏

51nod官网_51nod题难度 关注

给定一个0-1串s,长度为n,下标从0开始,求一个位置k,满足0<=k<=n, 并且子串s[0..k – 1]中的0的个数与子串s[k..n – 1]中1的个数相等。 注意:

(1) 如果k = 0, s[0..k – 1]视为空串
(2) 如果k = n, s[k..n – 1]视为空串
(3) 如果存在多个k值,输处任何一个都可以

(4) 如果不存在这样的k值,请输出-1

Input
就一行,包含一个0-1串S,长度不超过1000000。
Output
题目要求的k值
Input示例
01
Output示例
1

思路(月初第一水~):

维护两个前缀和即可。

对应枚举一个位子K。

暴力处理,时间复杂度O(n);

Ac代码:

#include<stdio.h>
#include<string.h>
using namespace std;
char a[1000500];
int cont0[1000500];
int cont1[1000500];
int main()
{
    while(~scanf("%s",a))
    {
        int n=strlen(a);
        for(int i=0;i<n;i++)
        {
            if(i==0)
            {
                if(a[i]=='0')cont0[0]=1,cont1[0]=0;
                else cont0[0]=0,cont1[0]=1;
            }
            else
            {
                cont1[i]=cont1[i-1];
                cont0[i]=cont0[i-1];
                if(a[i]=='1')cont1[i]++;
                else cont0[i]++;
            }
        }
        int flag=0;
        for(int i=0;i<=n;i++)
        {
            if(cont0[i-1]==cont1[n-1]-cont1[i-1])
            {
                flag=1;
                printf("%d\n",i);
                break;
            }
        }
        if(flag==0)printf("-1\n");
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169958.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • React 路由—基本使用「建议收藏」

    React 路由—基本使用「建议收藏」一:安装运行npmireact-router-dom安装react路由依赖项创建一个App.js根组件,并在根组件中,按需导入路由需要的三个组件HashRouter:表示路由的包裹

    2022年8月2日
    7
  • 学习Java必读的10本书籍

    学习Java必读的10本书籍来源|愿码(ChainDesk.CN)内容编辑愿码Slogan|连接每个程序员的故事网站|http://chaindesk.cn愿码愿景|打造全学科IT系统免费课程,助力小白用户、初级工程师0成本免费系统学习、低成本进阶,帮助BAT一线资深工程师成长并利用自身优势创造睡后收入。官方公众号|愿码|愿码服务号|区块链部落免费加入愿码全思维工程师社群|任一…

    2022年6月18日
    22
  • Charles打断点修改请求数据&响应数据

    Charles打断点修改请求数据&响应数据

    2021年7月13日
    296
  • MYSQL分布式集群使用-主从复制

    MYSQL分布式集群使用-主从复制

    2022年2月13日
    46
  • 小米手机解BL锁教程

    小米手机解BL锁教程1.找到设置,找到我的设备2.点击全部参数,点miui版本,点3下。3.返回,找到更多设置4.找到开发者选项5.找到设备定状态6.绑定账号和设备,关机,按开键加音量减,进去fast模式,链接电脑。7. 电脑打开下载解锁工具:点击链接下载将解锁工具解压缩,点击unlock.exe。7.解锁工具里登入可解锁的小米账号,同时将手机进入fastboot模式(关机状态下长按音量下键和电源键),用数据线连接电脑,提示已连接手机即可,若没有驱动点击图标安装即可。8.设备已解锁-解锁成功

    2022年6月12日
    53
  • Navicat 15 激活补丁破解方法

    Navicat 15 激活补丁破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    128

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号