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");
    }
}

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Keil5下载安装教程并完成注册(配图操作)[通俗易懂]

    Keil5下载安装教程并完成注册(配图操作)[通俗易懂]Keil5安装教程以及安装包下载1、安装包下载2、下载并解压安装包,并按步骤完成安装2.1、运行安装程序,点击next2.2、勾选accept,点击next2.3、选择安装路径,点击next2.4、信息随意填写,点击next2.5、等待安装2.6、点击finish,完成安装3、打开注册机,完成注册3.1、以管理员身份运行keil53.2、点击licence3.3、打开注册机3.4、复制CID,选择arm,点击Generate3.5、复制生成的4步骤到keil5,点击ADD3.6、注册成功1、安装包下载微

  • 1,Linux vim的常用快捷键

    1,Linux vim的常用快捷键1,Linux/vim的常用快捷键1,移动HJKL.H:向左L:向右J:向下K:向上e:跳跃到单词末尾b:跳跃到单词首字母w:跳跃到下一个单词的首字母shift+6:跳跃到本行的开头shift+$:跳跃到本行的末尾2,翻页Ctrl+F:向下一页Ctrl+B:向上一页Ctrl+E:向下(符合视觉)Ctrl+Y:向上shift+g:翻到文件末尾gg:翻到文件开头3,其它i:光标位置

  • 阿里云轻量应用服务器、ECS云服务器和虚拟主机的区别

    阿里云轻量应用服务器、ECS云服务器和虚拟主机的区别阿里云轻量应用服务器、ECS云服务器和虚拟主机区别在哪?这三种机型都可以建站,不过对于不同用户来说还是有区别的。下面老魏从难易程度、权限等方面来说说。比较简单的是云虚拟主机,系统已经预装建站环境,用户安装程序后就可以建站了,不过权限很少,适用于入门级建站首选;而云服务器的对用户技术要求高一些,用户要自行搭建环境,自由程度很高,可以自由配置服务器,需要有专业技术人员来维护;轻量应用服务器是给新…

  • bootstrap table表格分页样式问题[通俗易懂]

    bootstrap table表格分页样式问题[通俗易懂]bootstraptable表格分页样式问题今天项目里用到bootstrap做列表,数据展示没问题但是分页样式一直出不来,找了半天发现是因为没有引入css文件的问题&amp;amp;lt;head&amp;amp;gt;&amp;amp;lt;metacharset=&amp;quot;UTF-8&amp;quot;&amp;amp;gt;&amp;amp;lt;title&amp;amp;gt;Titl

  • matplotlib的安装教程以及简单调用

    matplotlib的安装教程以及简单调用1.matplotlib的下载我们的常规下载方式就是在命令行中输入:`pipinstallmatplotlib`,这样你就可以从官方进行下载,但是这样的下载速度是十分的慢的,我们在最详细的AnacondaInstallers的安装【numpy,jupyter】(图+文)(https://chen-ac.blog.csdn.net/article/details/122374025?spm=1001.2014.3001.5502)这一博客中曾写到,可以在`pipinstallmatplo

  • java数据库连接池有哪些_常用的数据库连接池

    java数据库连接池有哪些_常用的数据库连接池池(Pool)技术在一定程度上可以明显优化服务器应用程序的性能,提高程序执行效率和降低系统资源开销。这里所说的池是一种广义上的池,比如数据库连接池、线程池、内存池、对象池等。其中,对象池可以看成保存对象的容器,在进程初始化时创建一定数量的对象。需要时直接从池中取出一个空闲对象,用完后并不直接释放掉对象,而是再放到对象池中以方便下一次对象请求可以直接复用。其他几种池的设计思想也是如此,池技术的优势是…

发表回复

您的电子邮箱地址不会被公开。

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