KMP刷题记录
2024-09-06 13:24:30
【BZOJ4698】[SDOI2008]Sandy的卡片
- 差分一下然后选一个串,用这个串的所有前缀和其他串kmp,求出最长的公共部分即可
- 代码:
#include <bits/stdc++.h>
#define f(c,a,b) for (int c=a; c<=b; c++)
#define nmax 1010 using namespace std;
int n;
int a[nmax][nmax];
int b[nmax], nex[nmax], l[nmax]; void buildnext(int lb){
nex[] = -;
nex[] = ;
f(i,,lb){
int j = nex[i-];
for(;b[j+]!=b[i]&&j>=; j=nex[j]);
nex[i] = j+;
}
} int kmp(int lb, int id){
int ans=;
int j=;
f(i,,l[id]){
for(;b[j+]!=a[id][i]&&j>=; j=nex[j]);
j++;
ans = max(j,ans);
}
return ans;
} int main(){
int ans=;
cin >> n;
f(i,,n){
scanf("%d", &l[i]);
f(j,,l[i]) scanf("%d", &a[i][j]);
f(j,,l[i]) a[i][j-]=a[i][j]-a[i][j-];
l[i]--;
}
f(i,,l[]){
int c=;
f(j,i,l[]) b[++c]=a[][j];
buildnext(c);
int ta=nmax;
f(j,,n) ta = min( kmp(c,j), ta );
ans = max(ans, ta);
}
printf("%d\n",ans+);
return ;
}最新文章
- 批量插入数据(基于Mybatis的实现-Oracle)
- maven -- 学习笔记(四)实现在Eclipse用maven搭建springmvc项目(附构建步骤和详细实现代码)
- Struts2之Action
- MySQL优化常用
- MVC中System.InvalidOperationException: 传入字典的模型项的类型为“XXX”,但此字典需要类型“XXA”的模型项
- lintcode:Binary Search 二分查找
- 第五十六篇、OC打开本地和网络上的word、ppt、excel、text等文件
- DTcms手机版使用余额支付 提示信息跳转到PC版的错误。以及提交订单不打开新页面
- Windows Phone 之手势识别(Flick)
- 【转】Word中使用Endnote很卡解决方案
- 性能监控之Java程序执行解析
- Maven入门-4.Maven的依赖
- github、gitlab 管理多个ssh key
- 我的Chrome
- copy11
- 前端工程化webpack(一)
- 零基础学Python--------第9章 异常处理及程序调试
- go-无法下载websocket的问题
- npm太慢, 修改npm镜像
- 再谈 iptables 防火墙的 指令配置
热门文章
- 使用Intellij编写Spring Hello World
- VS2013下搭建SDL开发环境
- Android之SimpleAdapter简单实例和SimpleAdapter参数说明
- Codeforces_729_C
- React+Echarts简单的封装套路
- SpringBoot使用ELK日志收集ELASTIC (ELK) STACK
- JDBCTemplate初学简介
- MongoDB入门(介绍、安装)
- 杭电-------2045不容易系列之(3)—— LELE的RPG难题(C语言写)
- 【算法总结】图论/dp-动态规划 大总结