http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1393 正解一眼看出来的应该是鸽笼原理.记录每个位置的前缀和,就是dp[i][1]表示前i个数中,1的个数.dp[i][0]同理. 然后计算出每一个位置的dp[i][1] - dp[i][0],如果和前面的出现相同,那么这一段就是贡献. 也可以从化简dp公式来看. 也是一样的都dp[i][0] && dp[i][1] 那么设区间为be, en 如果要相同,则需要dp…
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<…
题目: 思路:把'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; //存前缀和最早出现的位置 ]; //数字数组 in…
1393 0和1相等串 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 给定一个0-1串,请找到一个尽可能长的子串,其中包含的0与1的个数相等. Input 一个字符串,只包含01,长度不超过1000000. Output 一行一个整数,最长的0与1的个数相等的子串的长度. Input示例 1011 Output示例 2 记录每一个字符时所含有的1个个数与0的个数,一个字串包含的0和1的个数相等,就是首尾处1的个数与0的个数的差值相等.所以对于…
Problem G. Generators Input file: generators.in Output file: generators.outLittle Roman is studying linear congruential generators — one of the oldest and best known pseudorandom number generator algorithms. Linear congruential generator (LCG) starts w…
描述 http://poj.org/problem?id=1065 木棍有重量 w 和长度 l 两种属性,要使 l 和 w 同时单调不降,否则切割机器就要停一次,问最少停多少次(开始时停一次). Wooden Sticks Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 21277   Accepted: 9030 Description There is a pile of n wooden sticks. The le…
中学就听说过抽屉原理,可惜一直没机会见识,现在这题有鸽笼原理的结论,但其实知不知道鸽笼原理都可以做 先总结一下鸽笼原理: 有n+1件或n+1件以上的物品要放到n个抽屉中,那么至少有一个抽屉里有两个或两个以上物品. 如果你知道这个结论: a1,a2,a3...am是正整数序列,至少存在整数k和r,1<=k<r<=m,使得ak+a(k+1)+...+a(r)是m的倍数. 证明比较简单: Sk表示前k个数之和, (1)若Sk%m==0,前k个数就是m的倍数 (2)如果Sn与St模m同余,那么从…
关于鸽笼原理的知识看我写的另一篇博客 http://blog.csdn.net/u011026968/article/details/11564841 (需要说明的是,我写的代码在有答案时就输出结果了,但OJ也是从文件读入,所以乍一看我的好像在没输入完就有结果了,但OJ不知道,其实我是直接拿poj3370的代码AC的,32MS,O(∩_∩)O) 直接贴代码 #include<cstdio> #include<cstring> using namespace std; #define…
UVA 10620 - A Flea on a Chessboard 题目链接 题意:给定一个跳蚤位置和移动方向.如今在一个国际象棋棋盘上,左下角为黑格,一个格子为s*s,推断是否能移动到白格子.问要移动多少次才干到白格,边界不算白格. 思路:利用鸽笼原理落在黑格子和边界上的一共同拥有(s + 1)^2个点,也就是说.假设形成循环,周期肯定在这之内.所以能够不断去模拟跳格子,直到踩到白格,或者踩到之前落到过的黑格就结束 只是事实上还有更优的方法,由于跳蚤跳跃路径为直线,观察下能够发现假设能够到白…
题目链接  Points Inside A Polygon 题意  给定一个$n$个点的凸多边形,求出$[ \frac{n}{10}]\ $个凸多边形内的整点. 把$n$个点分成$4$类: 横坐标奇,纵坐标奇 横坐标奇,纵坐标偶 横坐标偶,纵坐标奇 横坐标偶,纵坐标偶 根据鸽笼原理,这$4$类点中至少有一类点数目不小于$[ \frac{n}{4}]\ $ 每一个类别中,每两个点的中点肯定为整点,并且当这两个点不在凸多边形上相邻的时候, 他们一定在凸多边形内. 那么把这$4$个类别里面的点分别处理…