Luogu3426 [POI2005]SZA-Template (KMP)(未完成)
未理解透,鬼知道怎么A的
蒟蒻交了个乱猜贪心搞了10pts,一翻题解群佬乱舞,最后DP解决
$\exists i - next[i] <= j, f[j] = f[next[i]] $
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#define R(a,b,c) for(register int a = (b); a <= (c); ++ a)
#define nR(a,b,c) for(register int a = (b); a >= (c); -- a)
#define Max(a,b) ((a) > (b) ? (a) : (b))
#define Min(a,b) ((a) < (b) ? (a) : (b))
#define Fill(a,b) memset(a, b, sizeof(a))
#define Abs(a) ((a) < 0 ? -(a) : (a))
#define Swap(a,b) a^=b^=a^=b
#define ll long long#define ON_DEBUG#ifdef ON_DEBUG#define D_e_Line printf("\n\n----------\n\n")
#define D_e(x) cout << #x << " = " << x << endl
#define Pause() system("pause")
#define FileOpen() freopen("in.txt","r",stdin);#else#define D_e_Line ;
#define D_e(x) ;
#define Pause() ;
#define FileOpen() ;#endifstruct ios{template<typename ATP>ios& operator >> (ATP &x){x = 0; int f = 1; char c;for(c = getchar(); c < '0' || c > '9'; c = getchar()) if(c == '-') f = -1;while(c >= '0' && c <= '9') x = x * 10 + (c ^ '0'), c = getchar();x*= f;return *this;}
}io;
using namespace std;const int N = 500007;char str[N];
int nxt[N];
int f[N], pos[N];
int main(){
//FileOpen();scanf("%s",str + 1);int len = strlen(str + 1);nxt[0] = -1;int j = 0;R(i,2,len){while(j != -1 && str[j + 1] != str[i]) j = nxt[j];nxt[i] = ++j;}f[1] = 1;j = 0;R(i,2,len){f[i] = i;if(pos[f[nxt[i]]] >= i - nxt[i]) f[i] = f[nxt[i]];pos[f[i]] = i;}printf("%d", f[len]);return 0;
}
转载于:https://www.cnblogs.com/bingoyes/p/11240752.html
Luogu3426 [POI2005]SZA-Template (KMP)(未完成)相关推荐
- P3426 [POI2005]SZA-Template(kmp、dp)
解析 做出来了就是胜利! 个人感觉虽然我这个nxt树的码量会大一点,但是思路其实比较自然.(看题解区也有) 也是一个相当可取的做法. 现在来讲讲巧妙的dp做法. 考虑直接嗯设:fif_ifi 表示覆 ...
- luogu3426 [POI2005]SZA-Template 后缀树
链接 bzoj不能auto https://www.luogu.org/problemnew/show/P3426 思路 这个要求的串一定是S的前缀和S的后缀. 转化一下 建立出来fail树(fail ...
- 2021春季每日一题【week6 未完结】
目录 28. 实现 strStr()[KMP] 141. 周期[KMP 未完成] 91. 解码方法[未完成] 821. 跳台阶 363. 矩形区域不超过 K 的最大数值和[前缀和] 3412. 邻域均 ...
- 洛谷3426 [POI2005]SZA-Template 恶臭dp+kmp
前言 做这道题时,我和巨神yxc在洛咕上看到了一篇代码奇短的题解,然后看解析,发现里面的证明都是"显然"."很简单",被臭到. 于是zyd和yxc爆肝了2h左右 ...
- 【POI2005】SZA-Template(KMP)
传送门 题解: 首先可以确定答案是这个串的一个border,一个border能覆盖全串的条件就是所有border包含这个位置的右端点之间的最大间距不能超过这个border的长度. 可以建立nxt树来判 ...
- P3426 [POI2005]SZA-Template(kmp+dp)
https://www.luogu.com.cn/problem/P3426 这题出得挺好的,代码量简洁但是却有一定思维量. 先说一下暴力做法,不难看出如果要完成这一工作,必然和前后缀有关,如果当前i ...
- [HNOI2008]GT考试[矩阵快速幂+kmp优化的dp]
解题思路:假如说我们用f[i]表示长度为i的串能组合成无不吉利数字的组合的个数的话我们无法找到f[i]和f[i+1]的关系,就是我们下一位填某个数字会不会出现不吉利串,这就和你前面的串末尾于不吉利串重 ...
- MED-V桌面虚拟化之二配置Template Server(1)
在前一篇博客中我们介绍了如何配置MED-V Server,为了让整个实验顺利的进行下去,我们还要搭建Template Server,用于镜像的制作.在这里我采用的是xp,总共要安装三个组件:VPC20 ...
- Luogu3375 【模板】KMP字符串匹配
复习字符串ing KMP模板 #include <iostream> #include <cstdio> #include <cstring> #include & ...
最新文章
- 用微信点单 订餐系统打造属于个人的O2O外卖订餐行业商业平台
- [面试专题]Web缓存详解
- 史上最详细Docker安装Mysql 带每一步详图及解释 并教你Docker 打印容器日志!!!相信值得你的阅读!!!
- php jquery grid,jQuery Grid
- 面向对象三大特性: 封装
- [导入]设计模式初学者系列-工厂方法
- 51nod 1013快速幂 + 费马小定理
- WebAssembly实例之hello world
- Linux基础-编译安装Python
- 北航的计算机与技术专业如何,计算机科学与技术考研北航的这个专业怎么样
- python发微信消息_利用python实现微信消息自动提醒
- 可爱的小老鼠计算机教案,大班语言儿歌教案《小老鼠玩电脑》
- nvcc: command not found
- 视频编解码——编码流程介绍
- MATLAB在线工具
- 【报告分享】2021Q2中国线上高增长消费市场白皮书-魔镜市场情报 (附下载)
- 替换word中手动换行(软回车)为段落标记(硬回车)
- 传感器发展历史(详细)
- vba excel学习笔记-从单元格获取数据,修改数据
- 纯分享,自媒体必备工具合集
热门文章
- js计算金额精度问题--currency.js(2022.11.10 阴)
- 更多内容请移步GitHub
- 多目标优化中常用的绩效指标(Performance Indicator)(最全概括)
- 牛客算法周周练11A - 切题之路(阅读理解)
- ssh远程No route to host问题解决
- 《学习opencv》第四章1,2题(第二题详解,最切题)
- 使用CAPL 内置函数 memcpy 和memcmp 处理数组的若干问题
- python 串口示波器
- 北京联合大学计算机科学与技术分数线,北京联合大学录取分数线2021是多少分(附历年录取分数线)...
- docker 的安装以及简单centos镜像制作、启动