51nod 1393 1393 0和1相等串

https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1393

当0和1的数量差值为0时,进行记录和ans进行比较,其他的,差值相等时,0和1的数量一定相等。用后面的减前面的情况。

#include<bits/stdc++.h>
using namespace std;
char s[1000005];
int a[1000005],b[1000005];
map<int,int>m;
main()
{
    int len,i,ans=0,t;
    scanf("%s",s);
    len=strlen(s);
    for(i=0;i<len;i++)
    {
        a[i+1]=a[i];
        b[i+1]=b[i];
        if(s[i]==‘0‘)
        a[i+1]++;
        if(s[i]==‘1‘)
        b[i+1]++;
        t=b[i+1]-a[i+1];
        if(t==0)
        ans=max(ans,i+1);
        else
        {
            if(m[t])
            ans=max(i+1-m[t],ans);
            else
            m[t]=i+1;
        }
    }
    printf("%d",ans);
}
时间: 2024-12-14 05:20:56

51nod 1393 1393 0和1相等串的相关文章

1393 0和1相等串 51nod

1393 0和1相等串 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 给定一个0-1串,请找到一个尽可能长的子串,其中包含的0与1的个数相等. Input 一个字符串,只包含01,长度不超过1000000. Output 一行一个整数,最长的0与1的个数相等的子串的长度. Input示例 1011 Output示例 2 起点和终点的关系整理一下,有时候可以得到一种hash的思路. #include<iostream> #include<

51nod 1393 0和1相等串 思路 : map存前缀和

题目: 思路:把'0'当成数字-1,'1'当成数字1,求前缀和,用map更新当前前缀和最早出现的位置.(用map而不用数组是因为可能会出现负数) 当前缀和的值之前出现过,比如i = 10时,sum = 0:j = 50时,sum = 0; 更新ans = max(ans,j-i): 代码: #include <bits\stdc++.h> using namespace std; map<int,int> m; //存前缀和最早出现的位置 int a[1000001]; //数字数

51nod 算法马拉松18 B 非010串 矩阵快速幂

非010串 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 如果一个01字符串满足不存在010这样的子串,那么称它为非010串. 求长度为n的非010串的个数.(对1e9+7取模) Input 一个数n,表示长度.(n<1e15) Output 长度为n的非010串的个数.(对1e9+7取模) Input示例 3 Output示例 7 解释: 000 001 011 100 101 110 111 读完题,这样的题目肯定是能找到规律所在的,要不然数据太大根本无法算.假设现在给的

51Nod - 1092 回文字符串

51Nod - 1092 回文字符串 回文串是指aba.abba.cccbccc.aaaa这种左右对称的字符串.每个字符串都可以通过向中间添加一些字符,使之变为回文字符串. 例如:abbc 添加2个字符可以变为 acbbca,也可以添加3个变为 abbcbba.方案1只需要添加2个字符,是所有方案中添加字符数量最少的. Input 输入一个字符串Str,Str的长度 <= 1000. Output 输出最少添加多少个字符可以使之变为回文字串. Input示例 abbc Output示例 2 题解

串的堆分配存储表示与实现--自己写数据结构

本次实现的数据结构是关于串的表示与实现,首先讲串的堆分配存储表示与实现,后面的博客将贴出串的另外数据结构的表示和实现 heapstring.h文件存放数据结构体,如下 #ifndef _HEAPSRING_H_ #define _HEAPSRING_H_ typedef struct _HString { char *ch; int length; }HString,*pHString; pHString init_null_string(void); pHString init_heap_st

第四章:2.串 -- 串的模式匹配算法(KMP)

前言: 目录: 1.串类型的定义 2.串的表示和实现 3.串的模式匹配算法 4.串操作应用举例 正文: 串的模式匹配即,在给定主串S 中,搜索子串T 的位置,如果存在T 则返回其所在位置,否则返回 0 串的模式匹配算法 主串 S: a b c a b c d s v t 子串 T: a b c d 一.原始算法 匹配一旦失败,子串即向右移动一个单位,直到完全匹配停止. 第一次匹配:(注:红色代表不匹配(失配)) S: a b c a b c a b c d s v t   T: a b c d

java 11-8 在大串中查找小串的案例

1.统计大串中小串出现的次数 举例: 在字符串"woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun" 结果: java出现了5次 分析: 1.首先已经知道字符串 A:定义一个统计变量=0: B:在大串中查找小串是否存在,用 int indexOf(String str):返回指定字符在此字符串中第一次出现处的索引. a:如果返回的索引值是-1,则说明 大串中并不存在这个小串,输出统计变量 b:返回

回文串和镜像串(摘)

#include<iostream> #include<stdio.h> #include<string.h> #include<ctype.h> const char* rev="A 3 HIL JM O 2TUVWXY51SE Z 8 "; //前26项为各个大写字母的镜像,后10个是数字1至9的镜像(不输入数字0) const char* msg[]={"not a palindrome","a reg

深度学习与计算机视觉系列(9)_串一串神经网络之动手实现小例子

作者:寒小阳&&龙心尘 时间:2016年1月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/50521072 声明:版权所有,转载请联系作者并注明出处 1.引言 前面8小节,算从神经网络的结构.简单原理.数据准备与处理.神经元选择.损失函数选择等方面把神经网络过了一遍.这个部分我们打算把知识点串一串,动手实现一个简单的2维平面神经网络分类器,去分割平面上的不同类别样本点.为了循序渐进,我们打算先实现一个简单的线性分类器,然后再拓