DNA

题目描述

小X身为奆老,兴趣爱好广泛,他还非常喜欢研究DNA序列……
小X进行了一项关于DNA序列研究,发现人某条染色体上的一段DNA序列中连续的k个碱基组成的碱基序列与做题的AC率有关!于是他想研究一下这种关系。
现在给出一段DNA序列,请帮他求出这段DNA序列中所有连续k个碱基形成的碱基序列中,出现最多的一种的出现次数。

输入

第一行为一段DNA序列,保证DNA序列合法,即只含有A,G,C,T四种碱基;
第二行为一个正整数k,意义与题目描述相同。

输出

一行,一个正整数,为题目描述中所求答案。

样例输入

AAAAA
1

样例输出

5

提示

对于这段DNA序列,连续的1个碱基组成的碱基序列只有A,共出现5次,所以答案为5。

记DNA序列长度为n。
下面给出每组数据的范围和满足性质情况:

 

【题解】

  看清楚题意,是连续k个,然后可以重叠的,直接字符串Hash搞即可.

 #include<bits/stdc++.h>
using namespace std;
const int N = 5e6+;
typedef unsigned long long ull;
unordered_map < ull , int > Mp ;
unordered_map < ull , int > Cnt ; ull h[N],p[N],base=;
char str[N];
ull get_hash( int L , int R){
return h[R] - h[L-] * p[ R - L + ];
} ull t[N];
int main()
{
int n,k;
scanf("%s%d",str+,&k);
n = strlen(str+);
p[] = ;
for( int i = ; i <= n ; i++ ){
h[i] = h[i-] * base + str[i] - 'A' + ;
p[i] = p[i-] * base ;
if( i >= k ){
ull tmp = get_hash( i-k+ , i ) ;
Cnt[tmp] ++ ;
}
}
int ans = ;
for( auto x : Cnt ){
ans = max( ans , x.second );
}
printf("%d\n",ans);
return ;
}
/*
AAAAACCCCCGGGGGGGGTTTTTTTTTTTTTT
1
14 */

【字符串hash】DNA的更多相关文章

  1. [知识点]字符串Hash

    1.前言 字符串的几大主要算法都多少提及过,现在来讲讲一个称不上什么算法, 但是非常常用的东西——字符串Hash. 2.Hash的概念 Hash更详细的概念不多说了,它的作用在于能够对复杂的状态进行简 ...

  2. 【BZOJ-3555】企鹅QQ 字符串Hash

    3555: [Ctsc2014]企鹅QQ Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1545  Solved: 593[Submit][Statu ...

  3. POJ 1200 字符串HASH

    题目链接:http://poj.org/problem?id=1200 题意:给定一个字符串,字符串只有NC个不同的字符,问这个字符串所有长度为N的子串有多少个不相同. 思路:字符串HASH,因为只有 ...

  4. LA4671 K-neighbor substrings(FFT + 字符串Hash)

    题目 Source http://acm.hust.edu.cn/vjudge/problem/19225 Description The Hamming distance between two s ...

  5. 各种字符串Hash函数比较(转)

    常用的字符串Hash函数还有ELFHash,APHash等等,都是十分简单有效的方法.这些函数使用位运算使得每一个字符都对最后的函数值产生影响.另外还有以MD5和SHA1为代表的杂凑函数,这些函数几乎 ...

  6. 字符串hash + 二分答案 - 求最长公共子串 --- poj 2774

    Long Long Message Problem's Link:http://poj.org/problem?id=2774 Mean: 求两个字符串的最长公共子串的长度. analyse: 前面在 ...

  7. 字符串hash - POJ 3461 Oulipo

    Oulipo Problem's Link ---------------------------------------------------------------------------- M ...

  8. 长度有限制的字符串hash函数

    长度有限制的字符串hash函数 DJBHash是一种非常流行的算法,俗称"Times33"算法.Times33的算法很简单,就是不断的乘33,原型如下 hash(i) = hash ...

  9. hdu 4622 Reincarnation 字符串hash 模板题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4622 题意:给定一个长度不超过2000的字符串,之后有不超过1e5次的区间查询,输出每次查询区间中不同 ...

随机推荐

  1. Laravel--文件管理及上传自定义目录及文件名

    laravel 上传 php 需要开启 fileinfo 扩展 先看一个例子: $file = $request->file('shopimg'); $path = $file->stor ...

  2. layui的select下拉框太长被遮挡了的解决办法

    layui的select下拉框太长采用滚动条的形式出现,可以给select的dl加一个最大高度,具体的效果如下图 .layui-form-select dl { max-height:160px; }

  3. Kali Linux软件更新日报20190623

    Kali Linux软件更新日报20190623   (1)payloadsallthethings更新到2.0-0kali4,此次更新增加帮助脚本. (2)tftpd32更新到4.50-0kali2 ...

  4. 生成model笔记

    https://github.com/yscacaca/DeepSense/tree/master/android_test这个才是真正的部署代码,跑这个代码就好. 跑python sample_mo ...

  5. Angular 项目打包之后,部署到springboot项目中,刷新访问404解决方法

    解决方法1: app.module.ts文件添加两行代码: import { LocationStrategy, HashLocationStrategy } from '@angular/commo ...

  6. Qt tableview加载数据

    Qt tableview加载数据 //把数据加载到tableView void ImportData::loadDataInTableView() { ) { if (pageNum>stude ...

  7. Closing the Sim-to-Real Loop: Adapting Simulation Randomization with Real World Experience

    Closing the Sim-to-Real Loop: Adapting Simulation Randomization with Real World Experience 模拟到实际循环闭环 ...

  8. Day3作业:ha_proxy配置文件修改

    不废话,上代码 readme: # Auther:ccorz Mail:ccniubi@163.com Blog:http://www.cnblogs.com/ccorz/ # GitHub:http ...

  9. PP篇7 生产替代料齐套后处理

    扫描可关注本人技术分享公众号,与您一起学习新知! 对于计划订单和生产订单, 当存在替代料的时候,完成齐套性检查后,按照可齐套量进行拆单,并删除不能齐套的替代料(有个删除规则).不能齐套就按照优先级最高 ...

  10. Python - Django - ORM 分组查询补充

    单表查询: models.py: from django.db import models class Employee(models.Model): name = models.CharField( ...