Loading [MathJax]/extensions/TeX/mathchoice.js

03 2019 档案

摘要:"参考博客1" "参考博客2" ,这里面输出方案的部分复杂度我不会证,而且觉得很假,我肯定95%写这种的人都是抄的而且不会证复杂度。。。。 输出方案的代码参考黄学长的 还有就是论文, "这里面" 有下载链接 记得特判长度是1的情况 关于输出方案 cpp include include include 阅读全文
posted @ 2019-03-29 11:17 QvvQ 阅读(151) 评论(0) 推荐(0) 编辑
摘要:"这里面" 有论文下载链接 结论 一个字符串的最小周期是 len nxt[len] (这个随便画画图就懂了) 如果 LCP(suf(1), suf(1 + p)) = len p 那么 p 是一个周期(其实跟上面差不多的)下图举了一个长度为 5 p = 2的栗子 A=C B=D C=E YY不出实现 阅读全文
posted @ 2019-03-27 22:02 QvvQ 阅读(144) 评论(0) 推荐(0) 编辑
摘要:n×n+12 个子串,减去重复的(height 的 和) “产生前缀” 的意思是 sa[i] 这个后缀有 n sa[i]+1 个前缀 cpp include using namespace std; int k, n, rnk[50005], sa[50005], 阅读全文
posted @ 2019-03-27 15:20 QvvQ 阅读(158) 评论(0) 推荐(0) 编辑
摘要:还是2009那篇论文里介绍的做法 "这里面" 有下载链接 cpp include include include using namespace std; int k, n, rnk[20005], sa[20005], s[20005], H[20005], c[20005], K; void S 阅读全文
posted @ 2019-03-27 10:38 QvvQ 阅读(89) 评论(0) 推荐(0) 编辑
摘要:2009那篇论文里介绍的做法 "这里面" 有下载链接 这个题是要转成差分序列再做的(同时要对答案处理一下) 导致我WA了一发的地方 写成 =了(求最长不重叠重复子串确实是 =) 对于下面这两组数据 这两组数据在差分序列上的最长不重叠重复子串长度都是 2 ,但第一组的实际答案是 2 ,第二组是 3 , 阅读全文
posted @ 2019-03-26 22:18 QvvQ 阅读(129) 评论(0) 推荐(0) 编辑
摘要:两个让我真正理解代码的资料: "2009集训队论文" 网上的经典应用都是从里面抄的,还把解释给去掉了。。。真事屑 "这篇博客" 代码注释特别好 "桶排换成快排的代码" ,便于理解算法思想 ,这里面要减去k的原因是 sa[i] 作为 sa[i] k 的第二关键字 循环中m=x说明所有后缀长度为x的子串 阅读全文
posted @ 2019-03-25 15:15 QvvQ 阅读(399) 评论(1) 推荐(0) 编辑
摘要:看不懂的地方来这里看~ in理解为读入,out理解为输出就行了= = 阅读全文
posted @ 2019-03-22 11:32 QvvQ 阅读(401) 评论(0) 推荐(0) 编辑
摘要:下面是P3808 【模板】AC自动机(简单版) 的两种写法 Trie图 const int MAXN = 1000010; int t[MAXN][26], word[MAXN], fail[MAXN], cnt, q[MAXN]; inline void insert(char *s) { int 阅读全文
posted @ 2019-03-19 11:46 QvvQ 阅读(141) 评论(0) 推荐(0) 编辑
摘要:fi,j 表示X串前 i 位 匹配到A串第 j 位的方案数,因为不能匹配到A串第 m 位,所以答案是 m1i=0fn,i f[i][j]=m1k=0f[i1][k]g[k][j] g[i][j] 是 从第 i 阅读全文
posted @ 2019-03-11 13:35 QvvQ 阅读(145) 评论(0) 推荐(0) 编辑
摘要:~~带花树,那是啥?~~ 每次复杂度 O(nm) 随机5次似乎就卡不掉(起码现在uoj上没有能卡掉这个的 cpp include using namespace std; int read() { int x = 0, c = getchar(); while (!isdigit(c)) c = 阅读全文
posted @ 2019-03-04 19:54 QvvQ 阅读(140) 评论(0) 推荐(0) 编辑
摘要:给出一个长度 n35 的序列,求他的子集和的第 k 小 把前 n/2 的子集和放到一个数组里 后 n/2 的放到另一个数组里,然后问题转化为了求各取一个数和的第 k 小 可以二分第 k 小的数是多少 cpp namespace QvvQ { vll t1, t2; int 阅读全文
posted @ 2019-03-03 16:35 QvvQ 阅读(374) 评论(0) 推荐(0) 编辑
摘要:首先第一个必须放1(不然放在中间会有两个重复的数) 最后一个必须放n n! \equiv 0 \pmod n \text{中间的数放}\frac{2}{1},\frac{3}{2},... 这样第 i 个数就是 $$ \prod_{j=1}^i{a_j}=1\times \fra 阅读全文
posted @ 2019-03-03 00:25 QvvQ 阅读(146) 评论(0) 推荐(0) 编辑
摘要:一直找和是负的行/者列取反就行了.... 可以发现每次取反负的行或者列一定会让矩阵和至少增加2 所以这个过程一定会结束,因为 值域 n m都很小 复杂度 O(n \times 10^6) (维护一下每行的和每列的和) ~~偷懒写了个最坏 O(n^2\times 10^6) 的过了~~ ~~其 阅读全文
posted @ 2019-03-02 22:57 QvvQ 阅读(213) 评论(0) 推荐(0) 编辑
摘要:欧拉回路是经过所有 边 仅一次 无向图有欧拉回路的条件是:每个点的度数都是偶数 并且图连通(可以有孤立点) cpp include define N 1000007 int f[N],I[N],d[N],n,m,u,v,A; int F(int x) {return x==f[x]?x:f[x]=F 阅读全文
posted @ 2019-03-02 22:51 QvvQ 阅读(327) 评论(1) 推荐(0) 编辑

点击右上角即可分享
微信分享提示