SPOJ题解
文章平均质量分 54
ZigZagK
一个蒟蒻。
展开
-
【最短路->DP】SPOJ(ACPC13)[Increasing Shortest Path]题解
题目概述有一张n个点m条边的图,给出Q个询问,每个询问为x,y,c表示求x->y的最小权值,但要满足如下条件: 1.不能走超过c条边。 2.走过的边的权值必须严格递增(保证给出的边的权值没有重复)。解题报告由于我们要满足路径边权递增,所以会想到给所有边按照边权排个序。然后我们依次将边加入图中,这样就可以保证路径边权是递增的。 那么在这个想法的基础上,我们记录f[i][j]表示从起点到达i点走了原创 2017-07-12 16:20:09 · 401 阅读 · 1 评论 -
【后缀自动机】SPOJ(LCS2)[Longest Common Substring II]题解
题目概述求n个串的最长公共子串。解题报告这道题是SPOJ1811的升级版,还是可以用SAM解决。 我们先对第一个字符串构造SAM,然后和SPOJ1811一样用其他串和SAM进行匹配,只不过由于有多个串,我们不能直接刷最大值来求LCS。所以我们将SAM的每个状态都添加一个min记录其他串到此状态时的最小匹配长度(当然无论如何min都不超过该状态的最大子串长度MAX)。那么答案就是所有min中的最大值吗?其原创 2017-07-06 18:16:23 · 1094 阅读 · 3 评论 -
【后缀自动机】SPOJ(LCS)[Longest Common Substring]题解
题目概述给出两个串A和B,求A和B的最长公共子串。解题报告这道题是SAM的经典应用,首先先提醒一下不要一看到LCS就想到最长公共子序列去了,这里是最长公共字串…… SAM真的是很神的字符串算法啊,不仅复杂度是线性的,还非常好写,但是真的太神了,所以很多可以用SAM的地方还需要各种转化。 我们先对A串建立SAM,那么现在我们就可以识别A的所有子串了。我们按顺序枚举B的前缀i,判断该前缀的后缀是否出现在A原创 2017-07-05 19:52:19 · 602 阅读 · 2 评论 -
【高维前缀和】SPOJ(TLE)[Time Limit Exceeded]题解
题目概述题目名称要不要这么奇葩而且和题面没有半毛钱关系啊,我上交题目都以为自己TLE了。给出 nn 个数 cic_i ,现在需要构造 aia_i 使得: ai mod ci>0a_i\ mod\ c_i>0 。 ai and ai+1=0a_i\ and\ a_{i+1}=0 。 解题报告先不考虑 cic_i ,那么我们很容易想到DP: f[i][j]f[i][j] 表示前 ii 个数第 ii 个是原创 2017-10-25 18:50:26 · 650 阅读 · 2 评论