题目 传送门:QWQ A:Codehorses T-shirts 题意: 给定一些字符串表示去年和今年的衣服型号大小( XL XXL M...... ),要求用最少的次数把去年的衣服大小改成今年需要的.每次改动只能更改字符,不能增添字符. 分析: 把今年和去年的型号字典序排一下.然后用挨个对上(因为题目保证合法,所以长度一样的数量必定相等).在字符串长度是1的时候要暴力匹配一下,因为长度为1时有L S M三种东西. 代码: #include <bits/stdc++.h> using name…
[SPOJ]Longest Common Substring II (后缀自动机) 题面 Vjudge 题意:求若干个串的最长公共子串 题解 对于某一个串构建\(SAM\) 每个串依次进行匹配 同时记录\(f[i]\)表示走到了\(i\)节点 能够匹配上的最长公共子串的长度 当然,每个串的\(f[i]\)可以更新\(f[i.parent]\) 所以需要拓扑排序 对于每个串求出每个节点的最长匹配 然后对他们取\(min\),表示某个节点大家都能匹配的最长长度 最后对于所有点的值都取个\(max\)…
[BZOJ1717]产奶的模式(后缀数组) 题面 权限题 hihocoder 洛谷 题解 \(hihocoder\)里面讲的非常好了 这题要求的就是最长可重叠重复K次子串 所谓相同的子串 我们可以理解为如果有两个后缀的前缀相同 那么就有一个相同的子串 如果两个后缀的前缀相同 那么他们在\(SA\)中的排名是接近的 再说清楚点 如果两个后缀的前缀相同 必然是在后缀排序中一段连续的后缀都拥有这个相同的前缀 因此,求出\(height\)数组之后 考虑如何计算答案: 直接搞显然搞不出来 因此二分一下答…
[BZOJ2154]Crash的数字表格(莫比乌斯反演) 题面 BZOJ 简化题意: 给定\(n,m\) 求\[\sum_{i=1}^n\sum_{j=1}^mlcm(i,j)\] 题解 以下的一切都默认\(n<m\) 我们都知道\(lcm(i,j)=\frac{ij}{gcd(i,j)}\) 所以所求化简 \[\sum_{i=1}^n\sum_{j=1}^m\frac{ij}{gcd(i,j)}\] 看到\(gcd(i,j)\)很不爽,于是就再提出来 \[\sum_{d=1}^{n}\sum_…
[BZOJ2588]Count On a Tree(主席树) 题面 题目描述 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权.其中lastans是上一个询问的答案,初始为0,即第一个询问的u是明文. 输入格式: 第一行两个整数N,M. 第二行有N个整数,其中第i个整数表示点i的权值. 后面N-1行每行两个整数(x,y),表示点x到点y有一条边. 最后M行每行两个整数(u,v,k),表示一组询问. 输出格式: M…
[BZOJ3436]小K的农场(差分约束) 题面 由于BZOJ巨慢无比,使用洛谷美滋滋 题解 傻逼差分约束题, 您要是不知道什么是差分约束 您就可以按下\(Ctrl+W\)了 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> #include<set> #in…
[Luogu3732][HAOI2017]供给侧改革(Trie树) 题面 洛谷 给定一个纯随机的\(01\)串,每次询问\([L,R]\)之间所有后缀两两之间的\(LCP\)的最大值. 题解 一个暴力的想法是构建\(SA\)之后把所有位置按照\(rank\)排序,每次询问相邻的两个\(LCP\)就行了,然后拿\(set\)维护插入的操作. 然而并没有用到串随机的性质. 既然是随机的,那么大力猜一猜他们的\(lcp\)的长度不会很长,大概估计一个\(40\)左右吧. 把询问离线挂在右端点上,从左往…
[BZOJ5339][TJOI2018]教科书般的亵渎(斯特林数) 题面 BZOJ 洛谷 题解 显然交亵渎的次数是\(m+1\). 那么这题的本质就是让你求\(\sum_{i=1}^n i^{m+1}\),中间再减掉几项直接暴力就行了. 所以只要考虑求这个东西. 比如说斯特林数? \[m^n=\sum_{i=0}^{n}{m\choose i}i!\begin{Bmatrix}n\\i\end{Bmatrix}\] 那么 \[ \begin{aligned} \sum_{i=1}^n i^m&=…
[BZOJ1814]Ural 1519 Formula 1 (插头dp) 题面 BZOJ Vjudge 题解 戳这里 上面那个链接里面写的非常好啦. 然后说几个点吧. 首先是关于为什么只需要考虑三进制状态,因为哈密顿回路是不可能出现自交的,因此对于当前的轮廓线一定直接分割了哈密顿回路的一部分,不可能出现只考虑分割出来的情况下,存在插头的连通性直接交叉,否则一定不合法(比如说四个连续位置,你不可能\(1,3\)匹配,因为这样子画一条路径出来,无论如何都会和\(2,4\)的路径相交).因此,我们把一…
[BZOJ1880][Sdoi2009]Elaxia的路线(最短路) 题面 BZOJ 洛谷 题解 假装我们知道了任意两点间的最短路,那么我们怎么求解答案呢? 不难发现公共路径一定是一段连续的路径(如果不连续那么显然可以把中间分开的那段变成一样路径). 这样子我们只需要\(O(n^2)\)枚举这个路径的起点和终点\(check\)一下就可以知道答案了. 然而并没有办法求任意两点之间的最短路,因为这样子是\(O(n^3)\)的.并不要认为对于每个点跑一遍最短路就行了,\(SPFA\)不说了,它死了.…