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[]; //数字数组
int main(){
string s;
cin >> s; //将字符串转换成数字数组
for (int i = ; s[i]; ++i) {
if (s[i] == '') a[i + ] = -;
else a[i + ] = ;
} int ans = ; //最大长度
int sum = ; //前缀和
for (int i = ; i <= s.length(); ++i) {
sum += a[i]; //m[i]默认是为0的 (i为任意值) if (sum != && m[sum] == ) {
m[sum] = i; //之前未出现过相同值
}
else {
ans = max(ans, i - m[sum]); // 之前出现过相同值
}
} cout << ans << endl;
return ;
}
51nod 1393 0和1相等串 思路 : map存前缀和的更多相关文章
- 1393 0和1相等串 51nod
1393 0和1相等串 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 给定一个0-1串,请找到一个尽可能长的子串,其中包含的0与1的个数相等. I ...
- 1393 0和1相等串 鸽笼原理 || 化简dp公式
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1393 正解一眼看出来的应该是鸽笼原理.记录每个位置的前缀和,就是dp[i ...
- 51nod 1393:0和1相等串
1393 0和1相等串 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 给定一个0-1串,请找到一个尽可能长的子串,其中包含的0与1的个数相等. I ...
- [51NOD1393]0和1相等串(前缀和,map)
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1393 题意:中文题面. 把0看成是-1,并且存一遍前缀和.这样 ...
- 51Nod 1433 0和5(9的倍数理论)
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1433 思路: 数论中关于9的倍数的理论:若是一个数能被9整除,则各位数之 ...
- ENode 1.0 - 消息队列的设计思路
开源地址:https://github.com/tangxuehua/enode 上一篇文章,简单介绍了enode框架内部的整体实现思路,用到了staged event-driven architec ...
- 实现vue2.0响应式的基本思路
最近看了vue2.0源码关于响应式的实现,以下博文将通过简单的代码还原vue2.0关于响应式的实现思路. 注意,这里只是实现思路的还原,对于里面各种细节的实现,比如说数组里面数据的操作的监听,以及对象 ...
- 51nod——1391 01串(字符串、前缀和)
好像这题是4级题下放2级? 预处理:求每个位置 x 左区间 [ 0 , x ] 中 1 比 0 多的数量和右区间 ( x , n - 1 ] 中 0 比 1 多的数量(少就是负的).相当于求两个前缀和 ...
- ENode 1.0 - 框架的物理部署思路
开源地址:https://github.com/tangxuehua/enode 上一篇文章,介绍了enode框架的总体目标,以及如何实现高吞吐.低延迟.高可用.无单点问题的实现思路.本篇文章,我们再 ...
随机推荐
- clob字段的值插入和查询N种方法【包括java调用存储过程传入clob参数】
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import jav ...
- 为测试赋能,腾讯WeTest探索手游AI自动化测试之路
作者:周大军/孙大伟, 腾讯后台开发 高级工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. WeTest导读 做好自动化测试从来不件容易的事情,更何况是手游的自动化测试,相比传 ...
- BZOJ 3379: [Usaco2004 Open]Turning in Homework 交作业
Description 贝茜有C(1≤C≤1000)门科目的作业要上交,之后她要去坐巴士和奶牛同学回家. 每门科目的老师所在的教室排列在一条长为H(1≤H≤1000)的走廊上,他们只在课后接收 ...
- Semaphore实现原理分析
synchronized的语义是互斥锁,就是在同一时刻,只有一个线程能获得执行代码的锁.但是现实生活中,有好多的场景,锁不止一把. 比如说,又到了十一假期,买票是重点,必须圈起来.在购票大厅里,有5个 ...
- iOS 环信集成单聊界面,出现消息重复问题
解决办法很简单,数据重复就是EaseMessageViewController和ChatViewController重复调用了这个吧?//通过会话管理者获取收发消息 [self tableViewDi ...
- 在tomcat7中启用HTTPS的详细配置
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt385 最简单的方法,直接用java里的keytool工具生成一个keysto ...
- Unity黑巧克力 滚球游戏 入门级教程
<黑巧克力>系列教程是适合于新手上手Unity的教程,本教程适合作为初次接触Unity(零基础)的第一篇的教程.学习本教程需要有的基础是:线性代数.编程基础.Csharp语言基础.Unit ...
- 团队作业4---第一次项目冲刺(ALpha)版本 第六天
一.Daily Scrum Meeting照片 二.燃尽图 三.项目进展 a.完成所有基础功能 b.正在进行测试调试 四.困难与问题 1.测试前没有理清业务逻辑,导致前期测试深度不够: 2.在验证过去 ...
- dup和dup2详解
C语言中dup和dup2函数的不同和使用 发表时间: 2012年11月15日 | 作者: 陈杰斌 | 所属分类: C语言 | 评论: 0 | 浏览: 1024 在unix高级编程中有介绍dup和dup ...
- ThreadLocal原理及使用示例
简介:本文已一个简要的代码示例介绍ThreadLocal类的基本使用方式,在此基础上结合图片阐述它的内部工作原理. 欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblog ...