2023ccpc深圳G题相似基因序列问题

样例:

6 4 4 1
kaki
kika
manu
nana
tepu
tero
kaka
mana
teri
anan

输出:

2
2
1
0

解析:

如果是用暴力的话是 300*300*6000,这样子一定会超时。

这时候我们可以利用hash函数进行处理,对比一个字符串的小于为O(1)

这里的哈希函数创建,我调试的2小时。总结出来的

如果用int类型时,mod = 1e9+7;

这时我们可以 h[i] = (ll)(h[i-1]*p) + c,先转long long 类型,避免溢出,在进行mod答案是不会错的。

这样子可以节省空间复杂度。

在进行二分答案搜索不同字符串的关系。

重点:用二分进行优化,在到不一样的那个字符。

#include<bits/stdc++.h>
using namespace std;
#define ll long long 
const int mod = 1e9+7;
const int P = 131;
int h2[310][60010];
int h1[60010];
int p[60010];
int get_hash1(int i,int l,int r)
{return ((h2[i][r] - (ll)h2[i][l-1]*p[r - l+1]%mod) + mod) %mod;
}
int get_hash2(int l,int r){return ((h1[r] - (ll)h1[l-1]*p[r-l+1]%mod) + mod) %mod;
}
bool check(int i,int l1,int r1)
{return get_hash1(i,l1,r1) == get_hash2(l1,r1);
}int main()
{int n,q,m,k;cin >> n >> q >> m >> k;p[0] = 1;for(int i = 1;i <= m+10;i++){p[i] = ((ll)(p[i-1]*P)) % mod;}for(int i = 1;i <= n;++i){h2[i][0] = 0;string s ;cin >> s;for(int j = 1;j <= m;j++){h2[i][j] = ((ll)h2[i][j-1]*P + s[j-1])%mod;}//	cout << i << " " << h2[i][m]<<endl;}h1[0] = 0;while(q--){	string s;cin >> s;int res = 0;for(int i = 1;i <= m;i++){h1[i] = ((ll)h1[i-1]*P + s[i-1]) %mod;}//cout << h1[m]<<endl;for (int i = 1; i <= n; i++){int now = 0;for (int j = 1; j <= m; j++){if (!check(i, j, j)){now++;if (now > k) break;}int l = j, r = m;while (l < r)//减少遍历方式{int mid = l + r + 1 >> 1;if (check(i, l, r)) l = mid;//如果该区间内没有不同,那么l跳转至midelse r = mid - 1;//否则r向前跳转}j = l;//另j=l,减少遍历数量}if (now <= k) res++;}cout <<res<<endl; }return 0;
}

时间复杂度为:O(n*long(m)* k)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/670644.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SCI一区 | WOA-BiTCN-BiGRU-Attention多输入单输出回归预测(Matlab)

SCI一区 | WOA-BiTCN-BiGRU-Attention多输入单输出回归预测&#xff08;Matlab&#xff09; 目录 SCI一区 | WOA-BiTCN-BiGRU-Attention多输入单输出回归预测&#xff08;Matlab&#xff09;效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现WOA-BiTCN-BiGRU-A…

【go项目01_学习记录05】

学习记录 1 依赖管理 Go Modules1.1 弃用 $GOPATH1.2 Go Modules 日常使用1.2.1 初始化生成go.mod文件1.2.2 Go Proxy代理1.2.3 go.mod文件查看1.2.4 go.sum文件查看1.2.5 indirect 含义1.2.6 go mod tidy 命令1.2.7 清空 Go Modules 缓存1.2.8 下载依赖1.2.9 所有 Go Modules …

通信系列:通信中如何度量消息中所包含的信息量?如何评估通信系统的性能?

微信公众号上线&#xff0c;搜索公众号小灰灰的FPGA,关注可获取相关源码&#xff0c;定期更新有关FPGA的项目以及开源项目源码&#xff0c;包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 本节目录 一、通信中如何度量消息…

【Linux网络编程】自定义协议+HTTP协议

【Linux网络编程】自定义协议HTTP协议 目录 【Linux网络编程】自定义协议HTTP协议协议定制&#xff0c;序列化和反序列化应用层中的HTTP认识URL&#xff08;网址&#xff09;urlencode和urldecodeHTTP协议格式使用telnet获取百度的根目录资源HTTP的方法表单 HTTP的状态码HTTP常…

昂科烧录器支持O2Micro凹凸科技的电池组管理IC OZ7708

芯片烧录行业领导者-昂科技术近日发布最新的烧录软件更新及新增支持的芯片型号列表&#xff0c;其中O2Micro凹凸科技的电池组管理IC OZ7708已经被昂科的通用烧录平台AP8000所支持。 OZ7708是一款高度集成、低成本的电池组管理IC&#xff0c;适用于5~8s Li-Ion/Polymer电池组&a…

负氧离子大气监测系统解析

TH-FZ5负氧离子大气监测系统是一个综合性的环境监测系统&#xff0c;主要用于实时监测和评估大气中负氧离子的浓度水平。负氧离子&#xff0c;也称为空气维生素&#xff0c;对人体健康和环境质量有重要影响。负氧离子大气监测系统通常包括以下几个主要组成部分&#xff1a; 负氧…

Transformer - 编码器和解码器中的QKV分别来自哪

Transformer - 编码器和解码器中的QKV分别来自哪 flyfish Transformer - 注意⼒机制 Scaled Dot-Product Attention 计算过程 Transformer - 注意⼒机制 代码实现 Transformer - 注意⼒机制 Scaled Dot-Product Attention不同的代码比较 Transformer - 注意⼒机制 代码解释 Tr…

jetson实操(二):jetson nano发送短信到指定用户

文章目录 一、准备工作二、代码实现 一、准备工作 腾讯云网址&#xff1a;点击 注&#xff1a;需先申请“短信签名”和“短信正文”&#xff0c;按照要求填写申请即可&#xff0c;腾讯云的审核效率还是很快的&#xff0c;一般在1-2个小时内就会有结果&#xff0c;链接&…

Vue中Element的下载

打开vscode让项目在终端中打开 输入npm install element-ui2.15.3 然后进行下载 在node_modules中出现element-ui表示下载完成 然后在输入Vue.use(ElementUI); import Vue from vue import App from ./App.vue import router from ./router import ElementUI from element-ui…

鸿蒙内核源码分析(原子操作篇) | 谁在为原子操作保驾护航

基本概念 在支持多任务的操作系统中&#xff0c;修改一块内存区域的数据需要“读取-修改-写入”三个步骤。然而同一内存区域的数据可能同时被多个任务访问&#xff0c;如果在修改数据的过程中被其他任务打断&#xff0c;就会造成该操作的执行结果无法预知。 使用开关中断的方…

优雅的训服大模型:深入浅出Prompt技巧

ChatGPT以降&#xff0c;彻底引爆了AI&#xff0c;大模型进入了公众视野&#xff0c;每个人都可以享受AI带来的乐趣。大语言模型&#xff08;Large Language Model LLM&#xff09;虽然可以达到「类人」的水平&#xff0c;但仍需要以「大模型角度」去思考和对话才能最大限度的利…

[GXYCTF2019]BabySQli 1

解题步骤【这道题要是没有原吗 有点难想】 可以通过bp爆破用户名&#xff0c;但这里用手打admin试出来了&#xff1b;密码写了123&#xff0c;显示wrong pass【猜测密码错了】。 F12看有没有提示&#xff1b;涉及一个base32【组成部分只有大写字母和数字数字组成&#xff0c;或…