上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 26 下一页
摘要: 题面 "有权限号的去看吧" "Luogu" Sol 差分后就是求多个串的最长公共子串 套路啊 拼在一起用不同字符隔开,后缀数组,二分答案,分块height,开桶记录即可 ~~我把差分值离散了~~ 阅读全文
posted @ 2018-01-25 10:36 Cyhlnj 阅读(129) 评论(0) 推荐(0)
摘要: 题面 "Vjudge" "Vjudge" Sol 求一个串不同子串的个数 每个子串一定是某个后缀的前缀,也就是求所有后缀不同前缀的个数 每来一个后缀$suf(i)$就会有,$len sa[i]+1$的新的前缀,又由于有$height$个重复的,那么就是$len sa[i]+1 height$的贡献 阅读全文
posted @ 2018-01-25 08:43 Cyhlnj 阅读(129) 评论(0) 推荐(0)
摘要: 题面 "Hihocoder" "Vjudge" Sol 题目的提示说的也非常好 我对求$LCP(P L + len \% l, P + len \% L)$做补充 $len=LCP(P, P + L)$ 为什么只要求$LCP(P L + len \% l, P + len \% L)$呢? 考虑在$ 阅读全文
posted @ 2018-01-24 22:15 Cyhlnj 阅读(159) 评论(1) 推荐(0)
摘要: 题面 求多个串的最长公共子串 Sol 套路,拼在一起,二分答案+后缀数组判定 把大于答案的$height$分组,然后计算出一个组内是否有所有串的后缀 由于串只有$5$个开个桶就好了 阅读全文
posted @ 2018-01-24 10:47 Cyhlnj 阅读(126) 评论(0) 推荐(0)
摘要: 题面 "HiHocoder1415 " "Poj2774" Sol 都是求最长公共子串,$hihocoder$上讲的很清楚 把两个串拼在一起,中间用一个特殊字符隔开 那么答案就是排序后相邻两个不同串的后缀的$height$ 为什么呢? 如果答案为不相邻的两个后缀的前缀,计算它们最长前缀时必定要跨越过 阅读全文
posted @ 2018-01-24 09:58 Cyhlnj 阅读(126) 评论(0) 推荐(0)
摘要: 题面 "vjudge" Sol 二分答案+分组,判断有没有一个组的后缀个数不小于 k "做法" 阅读全文
posted @ 2018-01-23 20:33 Cyhlnj 阅读(114) 评论(0) 推荐(0)
摘要: 题目 "vjudge" Sol 先差分 然后求 "不可重叠最长重复子串" ~~bits/stdc++.h会CE~~ 阅读全文
posted @ 2018-01-23 18:16 Cyhlnj 阅读(113) 评论(0) 推荐(0)
摘要: 前言 "一道模板题" 后缀数组(SA)是一个比较强大的处理字符串的算法,是有关字符串的比较基础~~是吗?~~算法,所以必须掌握 实现主要有倍增和$DC3$,而我~~太弱了~~只学了倍增 目录 知识点 1.基数排序+倍增 2.最长公共前缀Height 一些要维护的东西 $s$:就是这个字符串,长度为$ 阅读全文
posted @ 2018-01-23 15:07 Cyhlnj 阅读(374) 评论(3) 推荐(1)
摘要: 题面 "传送门" Sol 求前缀和之后,每次枚举左端点,找到相应的区间最大值,丢到堆里面 每次取出一个就拿出来找下一个最大值再丢进去 那么就是要求区间第$k$大,主席树就好了 ~~因为数组开小了和没开longlong,WA无数遍~~ ~~我太菜了太菜了太菜了~~ cpp include define 阅读全文
posted @ 2018-01-23 10:28 Cyhlnj 阅读(170) 评论(0) 推荐(0)
摘要: 题面 "传送门" Sol 建出AC自动机后DFS能走的点,如果能走回来就可行 cpp include define IL inline define RG register define Fill(a, b) memset(a, b, sizeof(a)) using namespace std; 阅读全文
posted @ 2018-01-22 22:32 Cyhlnj 阅读(119) 评论(0) 推荐(0)
摘要: 题面 "传送门" Sol $LCT+$并查集维护双联通分量,每次加边$x,y$,如果已经相连就把这条路径缩成一个点,赋上权值 $LCT$调用$fa$时一定要在并查集中$find$一下 细节很多,常数很大 cpp include define IL inline define RG register 阅读全文
posted @ 2018-01-22 21:59 Cyhlnj 阅读(150) 评论(0) 推荐(0)
摘要: 题面 "传送门" Sol 求区间逆序对个数,离线莫队搞,开树状数组统计,记得开$longlong$ ~~不然WA无数遍不知道为什么~~ include define IL inline define RG register define Fill(a, b) memset(a, b, sizeof( 阅读全文
posted @ 2018-01-22 20:16 Cyhlnj 阅读(121) 评论(0) 推荐(0)
摘要: 题面 "传送门" Sol AC自动机+栈,每次匹配到栈顶减去这个单词的长度,回到之前的状态 最后栈中留下的就是答案 cpp include define IL inline define RG register define Fill(a, b) memset(a, b, sizeof(a)) us 阅读全文
posted @ 2018-01-22 19:04 Cyhlnj 阅读(206) 评论(0) 推荐(0)
摘要: 题面 "传送门" Sol 题目要求$\sum_{i=1}^{n!}[gcd(i, m!)==1]$ 设$N=n!,M=m!$,莫比乌斯反演一波 就变成了$\sum_{d|M}\mu(d)\frac{N}{d}$ 因为$M|N$所以$d|N$ 而有个定理$\sum_{d|M}\frac{\mu(d)} 阅读全文
posted @ 2018-01-22 18:38 Cyhlnj 阅读(116) 评论(0) 推荐(0)
摘要: 题面 "传送门" Sol "LCT维护子树和" include define IL inline define RG register define ls ch[0][x] define rs ch[1][x] define Fill(a, b) memset(a, b, sizeof(a)) us 阅读全文
posted @ 2018-01-22 16:42 Cyhlnj 阅读(181) 评论(0) 推荐(0)
摘要: 题面 "没有权限号的可以去LOJ" Sol 大家都知道,$LCT$上有许多实边和虚边 实边就是每棵$Splay$上的既认父亲又认儿子的边 虚边就是$Splay$和$Splay$之间只认父亲的的边 那么每个点就有它的虚儿子和实儿子,实际上虚儿子才是它在$LCT$维护的树上的真正的儿子 当你$Acces 阅读全文
posted @ 2018-01-22 15:36 Cyhlnj 阅读(242) 评论(0) 推荐(0)
摘要: 题面 "传送门" Sol 这道题卡空间。。。 先模拟出T,大力贪心,每次选最小的走显然最优 那么选了$(i, j)$它上面都只能选第$j$列以前的,它下面都只能选第$j$列以后的 每次选最小,更新每行能选的区间,判断即可 include define RG register define IL in 阅读全文
posted @ 2018-01-21 22:31 Cyhlnj 阅读(144) 评论(0) 推荐(0)
摘要: 题面 "传送门" Sol 首先有个很显然的暴力,构建AC自动机 每次询问$x, y$就$y$暴跳$trie中的父亲$,$跳fail$检查是否有$x$的结尾 cpp include define RG register define IL inline define Fill(a, b) memset 阅读全文
posted @ 2018-01-21 20:09 Cyhlnj 阅读(147) 评论(0) 推荐(0)
摘要: 题面 "传送门" Sol 在AC自动机上跑数位DP 设$f[i][j][0/1]$表示到$n的第i位$当前匹配到$AC自动机的j节点$的方案 转移就在AC自动机上跑 注意不能有前导零,可能有这种情况$000000$不能存在那么前导零就有问题 所以要单独把小于$n$的位数的数单独算出来,等于$n$的位 阅读全文
posted @ 2018-01-20 15:10 Cyhlnj 阅读(135) 评论(0) 推荐(0)
摘要: 题面 "传送门" Sol 就相当于从$x_0$开始左右横走,显然可以设$f[0/1][i][j]$表示左到$i$右到$j$,当前在左/右的代价 但是不好记转移代价,因为不知道时间 那么可以把它变成最小损失,每次转移就是加上两边没走的蛋降落的损失,最后用总代价相减即可 阅读全文
posted @ 2018-01-20 08:41 Cyhlnj 阅读(106) 评论(0) 推荐(0)
上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 26 下一页