CodeForces 608B Hamming Distance Sum
2016-03-28 08:53
507 查看
B. Hamming Distance Sum
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
Genos needs your help. He was asked to solve the following programming problem by Saitama:
The length of some string s is denoted |s|.
The Hamming distance between two strings s and t of
equal length is defined as
,
where si is
the i-th character of s and ti is
the i-th character of t.
For example, the Hamming distance between string "0011" and string "0110"
is |0 - 0| + |0 - 1| + |1 - 1| + |1 - 0| = 0 + 1 + 0 + 1 = 2.
Given two binary strings a and b,
find the sum of the Hamming distances between a and all contiguous substrings of b of
length |a|.
Input
The first line of the input contains binary string a (1 ≤ |a| ≤ 200 000).
The second line of the input contains binary string b (|a| ≤ |b| ≤ 200 000).
Both strings are guaranteed to consist of characters '0' and '1'
only.
Output
Print a single integer — the sum of Hamming distances between a and all contiguous substrings of b of
length |a|.
Examples
input
output
input
output
Note
For the first sample case, there are four contiguous substrings of b of length |a|:
"00", "01", "11",
and "11". The distance between "01" and "00"
is |0 - 0| + |1 - 0| = 1. The distance between "01"
and "01" is |0 - 0| + |1 - 1| = 0. The
distance between "01" and "11" is|0 - 1| + |1 - 1| = 1.
Last distance counts twice, as there are two occurrences of string "11". The sum of these edit distances is1 + 0 + 1 + 1 = 3.
The second sample case is described in the statement.
直接暴力求会超时。
a字符串中的每个字符都要比较lenb - lena + 1 = cmp次,这样先算出b中0 到 cmp中1的个数存入sum。然后遍历一遍a,a[i]为1则加cmp - sum,为0则加sum,同时更新sum,即每次前进一个单位,判断b[i]和b[i + cmp]即可。
参考博客:http://www.cnblogs.com/GeekZRF/p/5130958.html 感谢!!!
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
Genos needs your help. He was asked to solve the following programming problem by Saitama:
The length of some string s is denoted |s|.
The Hamming distance between two strings s and t of
equal length is defined as
,
where si is
the i-th character of s and ti is
the i-th character of t.
For example, the Hamming distance between string "0011" and string "0110"
is |0 - 0| + |0 - 1| + |1 - 1| + |1 - 0| = 0 + 1 + 0 + 1 = 2.
Given two binary strings a and b,
find the sum of the Hamming distances between a and all contiguous substrings of b of
length |a|.
Input
The first line of the input contains binary string a (1 ≤ |a| ≤ 200 000).
The second line of the input contains binary string b (|a| ≤ |b| ≤ 200 000).
Both strings are guaranteed to consist of characters '0' and '1'
only.
Output
Print a single integer — the sum of Hamming distances between a and all contiguous substrings of b of
length |a|.
Examples
input
01 00111
output
3
input
0011 0110
output
2
Note
For the first sample case, there are four contiguous substrings of b of length |a|:
"00", "01", "11",
and "11". The distance between "01" and "00"
is |0 - 0| + |1 - 0| = 1. The distance between "01"
and "01" is |0 - 0| + |1 - 1| = 0. The
distance between "01" and "11" is|0 - 1| + |1 - 1| = 1.
Last distance counts twice, as there are two occurrences of string "11". The sum of these edit distances is1 + 0 + 1 + 1 = 3.
The second sample case is described in the statement.
直接暴力求会超时。
a字符串中的每个字符都要比较lenb - lena + 1 = cmp次,这样先算出b中0 到 cmp中1的个数存入sum。然后遍历一遍a,a[i]为1则加cmp - sum,为0则加sum,同时更新sum,即每次前进一个单位,判断b[i]和b[i + cmp]即可。
参考博客:http://www.cnblogs.com/GeekZRF/p/5130958.html 感谢!!!
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <queue> using namespace std; int main() { string a, b; cin >> a >> b; int lena = a.size(), lenb = b.size(); int cmp = lenb - lena + 1; long long sum = 0, ans = 0; int i; for(i = 0; i < cmp; i++) { if(b[i] == '1') sum++; } for(i = 0; i < lena; i++) { if(a[i] == '1') ans += cmp - sum; else ans += sum; if(b[i] == '1') sum--; if(b[i + cmp] == '1') sum++; } printf("%I64d\n", ans); return 0; }
相关文章推荐
- Filter
- 【phpcms-v9】模型字段文件夹下各个文件的作用
- Project configuration is not up-to-date with pom.xml
- 反转链表
- 深入Java集合HashMap实现原理
- springboot-Developer tools开发者福利
- 银线蕨-我的啊银
- 什么是并发控制中的2PL
- v$sga/v$sgainfo/v$sgastat
- 安装keras,教育网速度比较快
- 【phpcms-v9】phpcms-v9视频模型的添加
- OpenCV进阶之路:神经网络识别车牌字符
- bzoj 1043 下落的圆盘(计算几何-圆的周长并)
- LFCS 系列第一讲:如何在 Linux 上使用 GNU sed 等命令来创建、编辑和操作文件
- phpcms-v9】后台content模块的content.php控制器文件分析-后台添加内容代码分析
- 在.net中调用Delphi dll的Pchar转换
- hbase 读写数据
- 【phpcms-v9】phpcms中常用代码总结
- HBase 5种写入数据方式
- math.h中一些常用函数