51nod 1396 还是01串 (思维or前缀和)
2017-07-13 22:22
197 查看
给定一个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
Output
Input示例
Output示例
思路:朴素的想法是利用前缀和记录01数量。
但有个更好的方法:
设所有数字和为sum,k位置断开,前半段和为i,后半段为sum - i;前半段有sum - i 个 0 (题设条件),有k - sum + i 个 1,由于和为i,所以 k - sum + i = i,得 k = sum
(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
思路:朴素的想法是利用前缀和记录01数量。
但有个更好的方法:
设所有数字和为sum,k位置断开,前半段和为i,后半段为sum - i;前半段有sum - i 个 0 (题设条件),有k - sum + i 个 1,由于和为i,所以 k - sum + i = i,得 k = sum
相关文章推荐
- 51nod 1396还是01串(前缀和)
- 51Nod 1396 还是01串 (还是前缀和)
- 51nod 1396 还是01串【前缀和】
- 51nod 1396 还是01串 【思维题】
- 51nod 1396 还是01串
- 51nod 1396 还是01串
- 51nod-【1396 还是01串】
- 51Nod-1396-还是01串
- 51nod 1396 还是01串
- AC日记——还是01串 51nod 1396
- 51nod 1396 还是01串 (根据答案推理性质)
- 51nod 1478 括号序列的最长合法子段【思维+前缀和+优先队列】好题!
- [广西邀请赛 - E] [HDU] 6186 - CS Course - 思维 - 位运算 or 前缀和和后缀和
- 51nod 1393 0和1相等串 (思维+前缀和)
- 51nod 1391 01串【线段树,思维】
- 广工oj 1231 && 51nod 1821 加强版 思维+并查集 OR 栈
- 51nod1393 0和1相等串 前缀和+hash 51nod1396 还是01串 前缀和
- 51Nod 1393 0和1相等串 (还是前缀和)
- 51nod 1391 01串(锻炼思维的好题)
- 51nod 还是01串