传送门

网上的题解:

枚举左端点,二分右端点位置,最后所有左端点的答案取最小值

我的题解。。。

二分答案,枚举左端点,看看是否有解。。

好像和上面是反的,但是思路没问题

过程用hash判重

#include <cstdio>
#include <cstring>
#define N 1001
#define p 100007
#define ULL unsigned long long int n, m, cnt, ans;
char s[N];
ULL sum[N][N], bit[N], to[p];
int head[p], next[p]; inline void insert(ULL v)
{
int i, u = v % p;
for(i = head[u]; ~i; i = next[i])
if(to[i] == v)
return;
to[cnt] = v;
next[cnt] = head[u];
head[u] = cnt++;
} inline bool find(ULL v)
{
int i, u = v % p;
for(i = head[u]; ~i; i = next[i])
if(to[i] == v)
return 1;
return 0;
} inline bool check(int x)
{
int i, j, f;
for(j = x; j <= m; j++)
{
f = 0;
cnt = 0;
memset(head, -1, sizeof(head));
for(i = 1; i <= n * 2; i++)
if(i <= n)
insert(sum[i][j] - sum[i][j - x] * bit[x]);
else if(find(sum[i][j] - sum[i][j - x] * bit[x]))
{
f = 1;
break;
}
if(!f) return 1;
}
return 0;
} int main()
{
int i, j, x, y, mid;
scanf("%d %d", &n, &m);
bit[0] = 1;
for(i = 1; i <= m; i++) bit[i] = bit[i - 1] * 107;
for(i = 1; i <= n * 2; i++)
{
scanf("%s", s + 1);
for(j = 1; j <= m; j++)
sum[i][j] = sum[i][j - 1] * 107 + s[j];
}
x = 1;
y = m;
while(x <= y)
{
mid = (x + y) >> 1;
if(check(mid)) ans = mid, y = mid - 1;
else x = mid + 1;
}
printf("%d\n", ans);
return 0;
}

  

[BZOJ4779] [Usaco2017 Open]Bovine Genomics(hash + 二分)的更多相关文章

  1. BZOJ4779: [Usaco2017 Open]Bovine Genomics

    题目描述 Farmer John owns Ncows with spots and N cows without spots. Having just completed a course in b ...

  2. 洛谷 [USACO17OPEN]Bovine Genomics G奶牛基因组(金) ———— 1道骗人的二分+trie树(其实是差分算法)

    题目 :Bovine Genomics G奶牛基因组 传送门: 洛谷P3667 题目描述 Farmer John owns NN cows with spots and NN cows without ...

  3. 【BZOJ】1014: [JSOI2008]火星人prefix(splay+hash+二分+lcp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1014 题意:支持插入一个字符.修改一个字符,查询lcp.(总长度<=100000, 操作< ...

  4. LOJ#6387 「THUPC2018」绿绿与串串 / String (Manacher || hash+二分)

    题目描述 绿绿和 Yazid 是好朋友.他们在一起做串串游戏. 我们定义翻转的操作:把一个串以最后一个字符作对称轴进行翻转复制.形式化地描述就是,如果他翻转的串为 RRR,那么他会将前 ∣R∣−1个字 ...

  5. POJ 1743 Musical Theme (字符串HASH+二分)

    Musical Theme Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 15900   Accepted: 5494 De ...

  6. Codeforces 1090J $kmp+hash+$二分

    题意 给出两个字符串\(s\)和\(t\),设\(S\)为\(s\)的任意一个非空前缀,\(T\)为\(t\)的任意一个非空前缀,问\(S+T\)有多少种不同的可能. Solution 看了一圈,感觉 ...

  7. bzoj1014: [JSOI2008]火星人prefix(splay+hash+二分)

    题目大意:一个字符串三个操作:①求两个后缀的LCP②插入一个字符③修改一个字符. 前几天刚学了hash+二分求lcp,就看到这题. 原来splay还能这么用?!原来splay模板这么好写?我以前写的s ...

  8. bnuoj 34990(后缀数组 或 hash+二分)

    后缀数组倍增算法超时,听说用3DC可以勉强过,不愿写了,直接用hash+二分求出log(n)的时间查询两个字符串之间的任意两个位置的最长前缀. 我自己在想hash的时候一直在考虑hash成数值时MOD ...

  9. 【bzoj1014】[JSOI2008]火星人prefix Splay+Hash+二分

    题目描述 火星人最近研究了一种操作:求一个字串两个后缀的公共前缀.比方说,有这样一个字符串:madamimadam,我们将这个字符串的各个字符予以标号:序号: 1 2 3 4 5 6 7 8 9 10 ...

随机推荐

  1. 【数据分析 R语言实战】学习笔记 第十一章 对应分析

    11.2对应分析 在很多情况下,我们所关心的不仅仅是行或列变量本身,而是行变量和列变量的相互关系,这就是因子分析等方法无法解释的了.1970年法国统计学家J.P.Benzenci提出对应分析,也称关联 ...

  2. shell流程语句使用介绍

    1)使用if.case.read例子1:#!/bin/bash#读取终端输入的字符read -p "Please input a Number:" nn1=`echo $n|sed ...

  3. 【iOS】UITableview cell 顶部空白的n种设置方法

    我知道没人会主动设置这个东西,但是大家一定都遇到过这个问题,下面总结下可能是哪些情况: 1, self.automaticallyAdjustsScrollViewInsets = NO;  这个应该 ...

  4. k8s集群介绍

    Kubernetes集群组件 一个典型的Kubernetes集群由多个工作节点和一个集群控制节点,以及一个集群状态存储系统etcd组成.其中Master节点负责整个集群管理工作,为集群提供管理接口,并 ...

  5. 获取显示设备的名称及PNPDeviceID

    实现效果: 知识运用: ManagementObjectSearcher类和ManagementObject类 实现代码: private void button1_Click(object send ...

  6. 数组初始化 和 vector初始化

    ] = {}; 整个数组都初始化为0 vector<); 整个vector初始化为1 如果你定义的vector是这样定义的: vector<int> B; 去初始化,千万不要用: ; ...

  7. python爬虫---实现项目(三) Selenium分析美团美食

    上一期博客,我本来想爬取美团美食的,但是由于请求头太复杂,没有破解开其中的几个参数,所以放弃,这次我们来用selenium来模式浏览器抓取数据,我们先来简单看一下流程: 1,利用selenium驱动浏 ...

  8. fckeditor的实例

                            第一步:去官网下载,删除多余的包 删除所有”_”开头的文件和文件夹   删除FCKeditor的目录下:   fckeditor.afp fckedit ...

  9. windows 7虚拟机与主机不能互ping通,但是都能与网关ping通

    这里是在Windows 10的环境下使用VMware安装了一个Windows 7的虚拟机,虚拟机中是使用桥接的方式.结果发现虚拟机不能与物理机互通,但是却能与网关互通.查看虚拟机和物理机的IP发现都是 ...

  10. 前端用户体验优化: JS & CSS 各类效果代码段

    前言 不定时更新 在线预览 https://zzyper.github.io/opti... 在线预览的源码 https://github.com/zzyper/opt... 部分内容仅兼容webki ...