Description

给定两个字符串集合A,B,均包含N个字符串,长度均为M,求一个最短的区间[l,r],使得不存在字符串\(a\in A,b\in B,\)且\(a[l,r]=b[l,r]\) ,字符串只由ACGT组成,

\(n,m\leq500\)

Input Format

第一行包含N,M,

接下来N行,每行一个长度为M的字符串,描述集合A

最后N行,描述集合B

Output Format

一行表示最短区间的长度

Sample Input

3 8

AATCCCAT

ACTTGCAA

GGTCGCAA

ACTCCCAG

ACTCGCAT

ACTTCCAT

Sample Output

4

Solution

emmm,可以用字典树\(O(n^3)\)过,

枚举左端点,对于集合A每个字符串构造字典树,

然后查询集合B中每个字符串,更新答案即可

这里有个优化,即如果集合B中存在一个字符串在字典树中完全存在,直接break跳到下个左端点因为答案一定不存在

Code

#include <cstdio>
#include <algorithm>
#include <cstring>
#define N 550
using namespace std; int n,m,tr[N*N][5],Ans,cnt;
char s1[N][N],s2[N][N]; inline int opx(const char &c){
switch(c){
case 'A':return 1;break;
case 'C':return 2;break;
case 'G':return 3;break;
default:return 4;break;
}
} inline void add(const int &id,const int &l){
int now=0;
for(int i=l;i<m;++i){
int k=opx(s1[id][i]);
if(!tr[now][k]) tr[now][k]=++cnt;
now=tr[now][k];
}
} inline int Find(const int &id,const int &l){
int now=0;
for(int i=l;i<m;++i){
int k=opx(s2[id][i]);
if(!tr[now][k]) return i-l+1;
now=tr[now][k];
}
return -1;
} int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;++i) scanf("%s\n",s1[i]);
for(int i=1;i<=n;++i) scanf("%s\n",s2[i]);
Ans=1e9;
for(int l=0;l<m;++l){
cnt=0;
int mx=0;
memset(tr,0,sizeof(tr));
for(int i=1;i<=n;++i) add(i,l);
for(int i=1;i<=n;++i){
int len=Find(i,l);
if(len==-1){mx=1e9;break;}
mx=max(mx,len);
}
if(mx==1e9) break;
Ans=min(Ans,mx);
}
printf("%d\n",Ans);
return 0;
}

【NOIP模拟】【USACO】 Bovine Genomics的更多相关文章

  1. [USACO]Bovine Genomics

    Description 给定两个字符串集合A,B,均包含N个字符串,长度均为M,求一个最短的区间[l,r],使得不存在字符串\(a\in A,b\in B,\)且\(a[l,r]=b[l,r]\) , ...

  2. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

  3. contesthunter暑假NOIP模拟赛第一场题解

    contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...

  4. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

  5. 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程

    数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...

  6. 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...

  7. 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...

  8. 队爷的新书 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的新书 题解:看到这题就想到了 poetize 的封 ...

  9. CH Round #58 - OrzCC杯noip模拟赛day2

    A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...

  10. CH Round #52 - Thinking Bear #1 (NOIP模拟赛)

    A.拆地毯 题目:http://www.contesthunter.org/contest/CH%20Round%20%2352%20-%20Thinking%20Bear%20%231%20(NOI ...

随机推荐

  1. 开源项目 log4android 使用方式详解

    话不多说, 直接上主题. log4android 是一个类似于log4j的开源android 日志记录项目. 项目基于 microlog 改编而来, 新加入了对文件输出的各种定义方式. 项目地址: 点 ...

  2. 机器学习 F1-Score 精确率 - P 准确率 -Acc 召回率 - R

    准确率 召回率 精确率 : 准确率->accuracy, 精确率->precision. 召回率-> recall. 三者很像,但是并不同,简单来说三者的目的对象并不相同. 大多时候 ...

  3. MySQL错误:2003-Can't connect to MySQL server on 'localhost'(10061 "unknown error")

    今天数据库出了一点错误之后决定重装一下,结果卡在了一个问题上,连装了5遍,加上网上各种配置教程都没能结局,错误如下图所示: 最后忽然想到会不会是因为每一次卸载的时候没有彻底卸载干净,然后就彻彻底底卸载 ...

  4. Redis 高可用集群

    Redis 高可用集群 Redis 的集群主从模型是一种高可用的集群架构.本章主要内容有:高可用集群的搭建,Jedis连接集群,新增集群节点,删除集群节点,其他配置补充说明. 高可用集群搭建 集群(c ...

  5. 尚未解决的selenium 定位

    自从入职以来,一直在写selenium自动化脚本,可是最近因为一个问题止步不前.可是也不能一直原地踏步呀在这里把问题先记录一下,免得以后忘了. 前景: 做一个表单的提交,点击按钮,执行某函数,若表单中 ...

  6. 数据库—Mysql

    今天跟大家来聊聊Mysql,首先介绍一下它的历史: Mysql是一个关系型数据库管理系统,最先由瑞典的MySQL AB公司开发,后来被sun公司收购,后因sun公司又被Oracle公司收购,致使MyS ...

  7. Java分布式锁之数据库实现

    之前的文章<Java分布式锁实现>中列举了分布式锁的3种实现方式,分别是基于数据库实现,基于缓存实现和基于zookeeper实现.三种实现方式各有可取之处,本篇文章就详细讲解一下Java分 ...

  8. Python操作 Memcache、Redis、RabbitMQ

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

  9. javaScript函数参数

    <p>查找函数中参数最大的数</p> <p id="demo"></p> <script> x = findMax(1, ...

  10. ArcGIS jsAPI (4.x)本地部署字体符号乱码

    在下载了新版arcigs 的 JS API 后,每次部署在IIS中都会出现部件字体乱码的问题,需配置响应标头和添加文件映射 一. HTTP响应标头配置 在 IIS 中的 HTTP响应标头 中加入以下配 ...