51nod 1393 0和1相等串(鸽巢原理)
来源:互联网 发布:批量查询域名是否备案 编辑:程序博客网 时间:2024/05/16 18:36
1393 0和1相等串
基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题
收藏
关注
给定一个0-1串,请找到一个尽可能长的子串,其中包含的0与1的个数相等。
Input
一个字符串,只包含01,长度不超过1000000。
Output
一行一个整数,最长的0与1的个数相等的子串的长度。
Input示例
1011
Output示例
2
曹鹏 (题目提供者)
鸽巢原理:桌上有十个苹果,要把这十个苹果放到九个抽屉里,无论怎样放,我们会发现至少会有一个抽屉里面至少放两个苹果。这一现象就是我们所说的“抽屉原理”。 抽屉原理的一般含义为:“如果每个抽屉代表一个集合,每一个苹果就可以代表一个元素,假如有n+1个元素放到n个集合中去,其中必定有一个集合里至少有两个元素。” 抽屉原理有时也被称为鸽巢原理。它是组合数学中一个重要的原理。
思路:转换到这个题上就可以这样理解,当0和1的差值与上一个0和1的差值相同时,那么他们之间的字符串中0和1的数目是相同的。求出最大的就行了。
点击打开链接
</pre><pre name="code" class="cpp"><pre name="code" class="cpp">#include<iostream>#include<algorithm>#include<stdio.h>#include<string.h>#include<stdlib.h>using namespace std;char str[1000100];struct node{ int x; int y; int xans; int yans;}q[1000100];int main(){ //freopen("3308_1.txt","r",stdin); //freopen("3308_2.out","w",stdout); while(scanf("%s",str+1)!=EOF){ int l = 0,r = 0; int len = strlen(str+1); for(int i=0;i<=len+10;i++){ q[i].x = 0; q[i].y = 0; q[i].xans = 0; q[i].yans = 0; } int maxx = 0; for(int i=1;str[i]!='\0';i++){ if(str[i] == '0'){ l++; }else{ r++; } if(l>r){ if(q[l-r].x == 0){ q[l-r].x = i; }else{ q[l-r].xans = i-q[l-r].x; if(maxx<q[l-r].xans){ maxx = q[l-r].xans; } } }else if(r>l){ if(q[r-l].y == 0){ q[r-l].y = i; }else{ q[r-l].yans = i-q[r-l].y; if(maxx<q[r-l].yans){ maxx = q[r-l].yans; } } }else{ if(maxx < i){ maxx = i; } } } printf("%d\n",maxx); } return 0;}
0 0
- 51nod 1393 0和1相等串(鸽巢原理)
- 51nod 1393 0和1相等串(鸽巢原理)
- 51nod 1393 0和1相等串(鸽巢)
- 51nod 0和1相等串
- 51nod 1393 0和1相等串(前缀和)
- 51NOD 1393 0和1相等串
- 51nod 1393:0和1相等串
- 51nod 1393 0和1相等串 (连续区间)
- 51nod 1393 0和1相等串
- 51Nod-1393-0和1相等串
- 51nod 1393 0和1相等的串
- 51nod oj 1393 0和1相等串 【贪心】
- 51Nod 1393 0和1相等串
- 51nod 1393 0和1相等串
- 51nod-【1393 0和1相等串】
- 51nod 1393 0和1相等串【思维】
- 51Nod 1393 0和1相等串
- 51nod 1393 0和1相等串
- 黑马程序员_集合框架(二)
- hdu 4393 Throw nails 相同的状态做相同的处理 贪心
- ARP协议的实现
- Java中加载文件时路径问题
- ios tableView 的header for section无法加载的问题
- 51nod 1393 0和1相等串(鸽巢原理)
- three Sum Closest
- 自动寻路NavMeshAgent的使用
- Iterator模式
- webservice客户端调用方式
- 苹果开发文档 User Experience Starting Point for iOS
- JAVA集锦(三)--Model1、Model2、三层架构的华丽转变
- Thinking in Java笔记
- UVA 1146 2-SAT