Codeforces Round #336 Hamming Distance Sum
题目:
http://codeforces.com/contest/608/problem/B
字符串a和字符串b进行比较,以题目中的第一个样例为例,我刚开始的想法是拿01与00、01、11、11从左到右挨个比较,希望能找到一些规律,结果并没有。。。
其实,如果我们能从整个比较过程来看这个问题,整个过程就没有那么难。题目要求的东西,其实就是a字符串和b字符串子串每次比较的不同的个数的总和,当我们像上面那个思路,拿a字符串每次移动一位,和b进行比较的时候,从整个过程来看,就相当于a的每一个元素从前往后和b比较不同的个数,再把每个元素的不同个数相加。
a中元素与b中比较并不是完全从前往后比,而是,对于a中第i个元素来说,他在b中也是从i个位置开始比较。比较区间的右端是len_b-len_a+i,这是因为,a与b最后一个子串的比较,一定是从len_b-len_a这个位置开始到最后,加上i就是比较到最后一个子串中i的位置。
另外,这道题用到了前缀和的技巧,就可以用O(a+b)的复杂度解决。
#include<stdio.h>
#include<string.h>
#define maxn 200005
char a[maxn],b[maxn] ;
int f[maxn][];
int main(){
scanf(" %s %s",a+,b+);
int lena = strlen(a+);
int lenb = strlen(b+);
for(int i = ;i<=lenb;i++){
f[i][] = f[i-][];
f[i][] = f[i-][];
f[i][b[i]-'']++;
}
long long ans = ;
for(int i = ;i<=lena;i++){
int l = i-,r = lenb-lena+i;
if(a[i]=='')
ans += f[r][]-f[l][];
else
ans += f[r][]-f[l][];
}
printf("%lld\n",ans);
return ;
}
Codeforces Round #336 Hamming Distance Sum的更多相关文章
- Codeforces Round #336 (Div. 2)B. Hamming Distance Sum 前缀和
B. Hamming Distance Sum 题目连接: http://www.codeforces.com/contest/608/problem/A Description Genos need ...
- Codeforces Round #336 (Div. 2) B. Hamming Distance Sum 计算答案贡献+前缀和
B. Hamming Distance Sum Genos needs your help. He was asked to solve the following programming pro ...
- Codeforces 608B. Hamming Distance Sum 模拟
B. Hamming Distance Sum time limit per test: 2 seconds memory limit per test:256 megabytes input: st ...
- Codeforces Round #336 (Div. 2)【A.思维,暴力,B.字符串,暴搜,前缀和,C.暴力,D,区间dp,E,字符串,数学】
A. Saitama Destroys Hotel time limit per test:1 second memory limit per test:256 megabytes input:sta ...
- Codeforces Round #336 (Div. 2)
水 A - Saitama Destroys Hotel 简单的模拟,小贪心.其实只要求max (ans, t + f); #include <bits/stdc++.h> using n ...
- Codeforces Round #336 (Div. 2) D. Zuma
Codeforces Round #336 (Div. 2) D. Zuma 题意:输入一个字符串:每次消去一个回文串,问最少消去的次数为多少? 思路:一般对于可以从中间操作的,一般看成是从头开始(因 ...
- Codeforces Round #336 (Div. 2)B 暴力 C dp D 区间dp
B. Hamming Distance Sum time limit per test 2 seconds memory limit per test 256 megabytes input stan ...
- Codeforces 608 B. Hamming Distance Sum-前缀和
B. Hamming Distance Sum time limit per test 2 seconds memory limit per test 256 megabytes input ...
- Educational Codeforces Round 53 E. Segment Sum(数位DP)
Educational Codeforces Round 53 E. Segment Sum 题意: 问[L,R]区间内有多少个数满足:其由不超过k种数字构成. 思路: 数位DP裸题,也比较好想.由于 ...
随机推荐
- js实现身份证号码验证
/*根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数 ...
- 超强语感训练文章(Provided by Rocky teacher Prince)
Content: Class1 My name is Prince Class2 Welcome to our hotel Class3 We’re not afraid of problems Cl ...
- JavaWeb---总结(十六)JSP指令
一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定义了三个指令: pa ...
- zabbix监控模式、分布式、自动化
适用场景: 1.监控主机多,性能瓶颈 2.多机房,防火墙 zabbix监控模式 针对agent来说 - 被动模式 - 主动模式(主动汇报服务端) 1)当监控主机超过300台,建议使用主动模式 2)当队 ...
- WinForm------GridControl显示每行的Indicator中的行号
1.修改Indicator的行宽 2.添加CustomDrawRowIndicator事件 private void AdminCardView_CustomDrawRowIndicator(obje ...
- 获取网卡的MAC地址原码;目前支持WIN/LINUX系统 获取机器网卡的物理(MAC)地址(服务器端)
<?php class GetMacAddr{ var $return_array = array(); // 返回带有MAC地址的字串数组 var $mac_addr; function Ge ...
- nltk.download()出错解决
http://blog.csdn.net/joey_su/article/details/17289621 官方下载地址 http://www.nltk.org/nltk_data/ 把python自 ...
- shiro 更改登录的用户名
ShiroUser user = (ShiroUser) SecurityUtils.getSubject().getPrincipal(); user.name = newName;
- ecshop 团购-》调取评论
涉及到的文件及代码:lib_insert.php,comments.lbi,{insert name='comments' type=$type id=$id} html代码: <blockqu ...
- Mono
mono (Novell公司开发的跨平台·NET运行环境) http://baike.baidu.com/link?url=iGl5T4-pmpJwB01mQxHq95bJcrCvR_JMNNfP0u ...