首页 > 其他分享 >串串选做

串串选做

时间:2024-03-21 12:12:30浏览次数:24  
标签:选做 lb 串串 int kmp include strlen

KMP

OI-wiki上有一个很不错的kmp做法,就是直接把模式串与文本串用特殊符号链接,然后求前缀数组即可
感觉vector可能更舒服(?)

#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>

using namespace std;

const int N=2000000;
char a[N],b[N];
vector<char>c;
vector<int>kmp;

void solve(){
	scanf("%s%s",a,b);
	int la=strlen(a),lb=strlen(b);
	for(int i=0;i<lb;++i) c.push_back(b[i]);
	c.push_back('\0');
	for(int i=0;i<la;++i) c.push_back(a[i]);
	kmp.push_back(0);
	for(int i=1;i<=la+lb;++i){
		int j=kmp[i-1];
		while(j>0&&c[i]!=c[j]) j=kmp[j-1];
		if(c[i]==c[j]) kmp.push_back(j+1);
		else kmp.push_back(j);
		if(kmp[i]==lb) printf("%d\n",i-2*lb+1);
	}
	for(int i=0;i<lb;++i) printf("%d ",kmp[i]);
}

int main(){
	solve();
	return 0;
}

标签:选做,lb,串串,int,kmp,include,strlen
From: https://www.cnblogs.com/w-official/p/18087074

相关文章

  • 安全设计原则(选做)
    安全设计原则(选做)在软件开发和系统架构设计中,安全设计原则是一组指导方针,旨在帮助开发者和设计师构建更安全的系统。这些原则可以减少系统的脆弱性,提高对抗潜在威胁的能力。通过各种资料,尽可能多的搜集安全原则。一、给出所有你能找到的安全原则的名称,内容和来源信息(图书名称,网......
  • dp选做
    连续正面的可能性题目链接设\(f[i][j][k]\)表示i枚硬币最多连续j面朝上且最末尾有k面朝上的方法数则:(1)k=0那前n-1位可以是任意数,\(f[i][j][0]=\Sigma_{k=0}^jf[i-1][j][k]\)(2)0<k<j那么j枚连续朝上的面一定不出现在最后面,所以\(f[i][j][k]=f[i-1][j][k-1]\)(3)k=j那......
  • Ynoi 大分块选做
    第二分块linkCF版本题意:给出一个序列\(a_{1...n}\),有\(m\)次操作。每次:修改:给出\(l,r,x\),表示把区间\([l,r]\)中\(>x\)的数减去\(x\)查询:给出\(l,r,x\),求\([l,r]\)中有多少个数\(=x\)\(1\len\le10^6,\space1\lem\le5\times10^5,\space0\lea_i,x......
  • dp&图论 杂题选做
    开个新坑qwq。upd:CSP前一周暂时停更。upd:暂时不会更了。P1099经典套路题。算法一:枚举。先dfs求出树的直径,再枚举直径上的每条路径,再dfs一遍求出最小偏心距即可。时间复杂度\(O(n^3)\),足以通过本题(由此可见本题有多水)。算法二:双指针。通过观察可以发现,在固定左端......
  • 2.17~2.18 题单选做
    Sister,Friend,Loverいつだってそばにいるから不论何时我都愿伴你左右簡単にナシと决めないで所以不要轻易否决我受け止めて接纳我吧CF1854DMichaelandHotel考察可以通过询问完成:\(k\)取足够大+二分得到某点指向的环上的一个点。\(k\)取1+二分得到......
  • 字符串进阶题目选做
    字符串进阶一些不那么裸的字符串题,甚至出现了parent树优化建图这种离谱的东西。前置知识:kmp,字符串哈希,AC自动机,SA,SAM,ManacherCF914FSubstringsinaString题意:给定字符串,要求支持单点修改,询问时给出字符串,求在\([l,r]\)中出现多少次。思路:考虑一般的字符串维护方法都......
  • 交互杂题选做
    交互杂题选做记录一些自己写过的很有意思的交互题。另外JOISC中有很多有意思的交互题,很值得一做。CF1292ERinandTheUnknownFlower题意:交互题,你要猜一个长为\(n\)的由\(CHO\)构成的字符串,你每次可以询问一个长度为\(t\)的字符串,代价是\(\dfrac{1}{t^2}\),你会得到......
  • GDKOI 选做
    不休陀螺题目描述这里思路点拨考虑一个区间在什么情况下是“陀螺无限”的。一个最为简单的条件就是\(\sum_{i=l}^rb_i-a_i\geq0\)。因为如果不满足这个,\(E\)就会一直减少,就会在某一个时刻停下来。当然,还有别的条件,比如说在中途某一个时刻\(E+\sum_{i=l}^{mid}b_i-a_i......
  • ZJOI 杂题选做
    P2272[ZJOI2007]最大半连通子图题目传送门注意到半联通子图缩完点一定是一条链,由于要求的是最大的半联通子图,所以该子图的每个强连通分量一定对应原图的完整的强连通分量,否则可以扩展。则对原图缩点,最大半联通子图一定是从入度为0的点到出度为0的点的一条链,拓扑求出带权......
  • 20211327 信息安全系统设计与实现 阅读习惯2(选做)
    阅读习惯2(选做)提交微信读书(或其他平台)目前的读书数据(总时长,册数,笔记数等)的截图,或其他阅读计划总结本学期的收获,新增的总时长,册数笔记等,谈谈本学期收获,养成良好的阅读习惯了吗?会一直坚持阅读吗?读书数据*从开始阅读电子书以来,我一直习惯于使用华为阅读app平台,在这里提交华为......