摘要:题意给你个字符串,问在字符串末尾还要添加几个字符,使得字符串循环2次以上。解法无论这个串是不是循环串 i-next[i] 都能求出它的最小循环节代码:/*思路:kmp+字符串的最小循环节问题分析:1 题目要求的是给定一个字符串,问我们还需要添加几个字符可以构成一个由n个循环节组成的...
阅读全文
摘要:题意:将一段字符串 分割成两个串 如果分割后的串为回文串,则该串的价值为所有字符的权值之和(字符的权值可能为负数),否则为0。 问如何分割,使得两个串权值之和最大思路:首先了解扩展kmp 扩展KMP:给出模板串A和子串B,长度分别为lenA和lenB,要求在线性时间内,对于每...
阅读全文
摘要:题意: 将一段字符串 分割成两个串 如果分割后的串为回文串,则该串的价值为所有字符的权值之和(字符的权值可能为负数),否则为0。 问如何分割,使得两个串权值之和最大思路: 裸的: 枚举分割点,计算,O(n) 判断是否回文 总复杂度O(n^2) 优化: 利用Manacher的预处理 ...
阅读全文
摘要:题意计算所有S的前缀在S中出现了几次思路跟前缀有关的题目可以多多考虑KMP的NEXT数组#include #include #include #include using namespace std;char S[2000000]; int NEXT[2000000];int d...
阅读全文
摘要:题意求所有循环次数大于1的前缀 的最大循环次数和前缀位置 解法直接用KMP求最小循环节 当满足i%(i-next[i])&&next[i]!=0 前缀循环次数大于1 最小循环节是i-next[i]#include #include #include #include ...
阅读全文
摘要:高阶函数 把函数作为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式。在python中 函数也是一种变量def add(x, y, f): return f(x) + f(y)map map()函数接收两个参数,一个是函数,一个是Iterable,...
阅读全文
摘要:题意找到子串在母串出现的第一个位置解法裸的KMP特别的地方第一次不看模板自己敲的KMP#includeconst int maxn=100000;const int MAXN=1000000;int next[maxn];int S[MAXN];int T[maxn];int N,...
阅读全文
摘要:切片语法L[l:r] 取L[l],L[l+1]…L[r-2],L[r-1]L[l:r:m] 取L[l],L[l+m],L[l+2*m],L[l+3*m]….(满足l+n*m>> for key in d: print(key)迭代valuefor value...
阅读全文
摘要:函数变量>>> a = abs # 变量a指向abs函数>>> a(-1) # 所以也可以通过a调用abs函数1定义函数def my_abs(x): if x >= 0: return x else: return -x默认参数陷阱 所以,...
阅读全文
摘要:题目大意一个 N*M 的棋盘上每个格子有一个数。每次选择两个相邻的格子,并使这两个数都加上 1。问最少多少次能使棋盘上的数都变成同一个数,如果永远不能变成同一个数则输出-1。显然有黑白染色的特征显然是二分图黑色和白色的数值差永远不变如果知道变成什么数,可以用网络流来判断是否可以做法...
阅读全文
摘要:list操作append() 添加最外面insert(pos,content) 插入指定地方pop() 删除最外面pop(pos) 删除指定地方list中可以有list,且能用二维数组的方式访问sort()排序tuple就是常量list,但是tuple中的类型为list的元素不是常...
阅读全文