随笔分类 -  题解

摘要:猜拳游戏(01规划) 题目描述 YYC和他的妹子nayC在玩石头剪刀布,但是这太简单了,于是现在YYC和nayC在玩一种新的猜拳游戏。 游戏分为每轮进行,每轮游戏共有n局石头剪刀布的游戏。一局若分出胜负则胜者得1分,平局双方都不得分。n局结束后,得分高者赢得此轮的胜利。 但是只有1轮的话还是太无聊了 阅读全文
posted @ 2020-04-16 22:20 chasedeath 阅读(453) 评论(0) 推荐(0)
摘要:[LOJ3066]\[ROI 2016]快递 (找不到题解,看了别人代码,自己理解了一下) 题意:给定一些路径,求最长的相交长度 1,并且输出方案 (注意没有相交时输出0而不是 1) 明显的结论:两条路径的 相交路径的LCA一定是某一条路径的LCA 暴力:我们可以通过求若干次LCA来得到一对路径的答 阅读全文
posted @ 2020-03-03 22:26 chasedeath 阅读(459) 评论(4) 推荐(0)
摘要:CF1175E Minimal Segment Cover(并查集/倍增) (倍增做法就不讲了) 将线段$[l,r]$按照$l$排序,对于每个前缀的l就能求出最大的$r$ 当我们不断增大$r$时,当前$l$对应位置的覆盖就不能满足询问所需,就需要不断向右边寻找最优的线段完成覆盖 每次接上去一个最优的 阅读全文
posted @ 2020-02-06 10:36 chasedeath 阅读(277) 评论(0) 推荐(1)
摘要:51Nod-1469 淋漓尽致子串 (后缀自动机) 对于原串构造后缀自动机 我们只考虑$|endpos|>1$的状态 发现对于一个状态,只有其中最长的子串会产生贡献,否则会在$p_i-1$出产生冲突 对于最长串的$p_i-1$位置,如果$link/parent$树上的一个儿子的$|endpos|>1 阅读全文
posted @ 2020-01-20 11:07 chasedeath 阅读(114) 评论(0) 推荐(0)
摘要:51Node-1600 Simple KMP (后缀自动机+树剖线段树/LCT) 题面给人一种非常复杂的感觉 我们考虑每次加入一个字符,产生的每一个新的后缀的贡献 对于后缀$S_{x,i}$我们可以从$i-1$继承过来得到$S_{x,i-1}$的答案,只用考虑$i$的贡献 任意一个$S_{j,i}( 阅读全文
posted @ 2020-01-20 10:35 chasedeath 阅读(199) 评论(0) 推荐(0)
摘要:HDU-5470 Typewriter (后缀自动机优化dp) 这个$dp$有两种转移 1.\(dp[i-1]+cost[s[i]] \rightarrow dp[i]\) 2.\(dp[j]+(i-j) \cdot A+2 \cdot B \rightarrow dp[i]\) ( $s_{j+1 阅读全文
posted @ 2020-01-20 10:19 chasedeath 阅读(196) 评论(0) 推荐(1)
摘要:HDU-5343 MZL's Circle Zhou (后缀自动机) 题意:从$A,B$两串中各选出一个子串$x,y$(可以为空),求能构成的不同串的个数 为了避免重复统计,我们需要规定优先级 对于任意一个答案中的串,它的合法切分中,我们使得$|x|$最大 对于$A,B$分别构建后缀自动机 我们统计 阅读全文
posted @ 2020-01-20 10:01 chasedeath 阅读(140) 评论(0) 推荐(1)
摘要:HDU-4641 K-string (后缀自动机+线段树合并) 由于$k$是固定的,所以会比较方便 对于整个串构建后缀自动机 利用线段树合并离线求出每个点的$endpos$情况,找到第$k$个元素,那个元素以后的的位置都出现了$k$次,将它们的答案加上$len-len[link]$,最后累前缀和即可 阅读全文
posted @ 2020-01-20 09:49 chasedeath 阅读(179) 评论(0) 推荐(0)
摘要:HDU-6194 string string string(后缀自动机) 这个题用后缀自动机做真的简单 统计一下每个状态$|endpos|$是否等于$k$就能得到答案 #include<bits/stdc++.h> using namespace std; #define reg register 阅读全文
posted @ 2020-01-20 09:42 chasedeath 阅读(115) 评论(0) 推荐(0)
摘要:HDU-5853 Jong Hyok and String (广义后缀自动机) 题意:给定一些串,每次查询一个串,求所有的 (在所有串中$endpos$都与它相同的),(出现在给定串的)不同子串个数 广义后缀自动机? 是不是听起来很高大上? 博主当然不明白原理,但是mo有关系 对于处理多个串的子串问 阅读全文
posted @ 2020-01-20 09:32 chasedeath 阅读(159) 评论(0) 推荐(1)
摘要:HDU-4416 Good Article Good sentence (后缀自动机) 题意:给定一个串$A$和若干串$B_i$,求出现在$A$中且不出现在$B$中的子串个数 这个题我们不能把$B_i$接在一起做,会直接MLE! 对于$A$构建$SAM$ 考虑对于每个$B_i$把出现在$B_i$中的 阅读全文
posted @ 2020-01-20 09:21 chasedeath 阅读(166) 评论(0) 推荐(0)
摘要:LOJ-2033.[SDOI2016]生成魔咒 (后缀自动机) 直接一点就后缀自动机了。。。 注意要开$map$存储状态转移 每次加入一个新的字符就加上新的状态的子串数量$len[new]-len[link[new]]$ #include<bits/stdc++.h> using namespace 阅读全文
posted @ 2020-01-20 09:08 chasedeath 阅读(139) 评论(0) 推荐(0)
摘要:POJ-3693 Maximum repetition substring (后缀数组) 题意:求连续重复次数最多的子串 一个连续重复子串可以描述为$l,r,len$(端点,循环节长度) \(O(n^2)\):直接枚举$l,len$,然后求$l$和$l+len$的$LCP$,就能得到最大的$r$ 考 阅读全文
posted @ 2020-01-19 15:16 chasedeath 阅读(104) 评论(0) 推荐(0)
摘要:POJ-3294 Life Forms (后缀数组) 要按照字典序输出的话后缀自动机就比较麻烦了,所以没有 把所有字符串接在一起,中间用不同的奇怪的字符隔开 二分答案$x$,将$LCP$数组分组使得每组中的$LCP\ge x$,找一下是否一半的串都在这组中出现过了即可 输出注意格式 #include 阅读全文
posted @ 2020-01-19 14:50 chasedeath 阅读(102) 评论(0) 推荐(0)
摘要:POJ-1743 Musical Theme (后缀系列) 由于有着所谓的升降调(?),所以可以理性地想到先作差 然后就是要统计最长的 至少不重叠地出现两次的 子串 注意有个Trick : 小于5不能输出! \(\ \) 后缀数组 依然地我们先二分答案$x$, 对于$LCP$数组分组,每组之内$LC 阅读全文
posted @ 2020-01-19 14:42 chasedeath 阅读(133) 评论(0) 推荐(0)
摘要:Luogu-2852 [USACO06DEC]牛奶模式Milk Patterns (后缀系列) 题意:求至少出现了$k$次的最长子串 后缀数组 二分长度$x$ 我们可以将$LCP$数组分段,每段内的$LCP[i]\ge x$,那么出现这些后缀长度为$x$的前缀均相同,然后统计每段最多包含几个后缀即可 阅读全文
posted @ 2020-01-19 14:27 chasedeath 阅读(106) 评论(0) 推荐(0)
摘要:HDU-5008 Boring String Problem(k大子串,后缀系列) 这个题似乎没有办法用后缀自动机写。。。 \(\ \) 后缀数组 由于后缀数组已经排好序,所以可对于$sa[i]$考虑其贡献的个数为$n-sa[i]+1-lcp[i-1]$ 考虑个数累前缀和$Sum[i]$,二分就$S 阅读全文
posted @ 2020-01-19 14:15 chasedeath 阅读(155) 评论(0) 推荐(0)
摘要:POJ-2774 Long Long Message (最长公共子串,后缀系列结构) 后缀数组 将两个串接在一起,中间加上一些奇怪的字符 然后就是求下标分别落在两个串中的所有$i,j$中$LCP(Suf_i,Suf_j)$的最大值 按照$SA$的顺序可以发现只用考虑最近的$i,j$,所以对于每个 \ 阅读全文
posted @ 2020-01-19 14:06 chasedeath 阅读(208) 评论(0) 推荐(0)
摘要:SPOJ-DISUBSTR - Distinct Substrings(后缀系列结构) 这是一个非常基础的模型了 后缀数组做法就是$Ans=\sum n-sa[i]+1-lcp[i-1]$ 这题后缀自动机和后缀树没有什么特别大的差别 后缀自动机有两种做法 欢迎跳转总结博客 SA: #include< 阅读全文
posted @ 2020-01-19 13:39 chasedeath 阅读(131) 评论(0) 推荐(0)
摘要:CodeChef - PRIMEDST (点分治/DSU+FFT) 题目的本质是要求每种距离的点对的个数 考虑使用点分治+FFT来维护 对于当前点分根以及周围的所有点,构造$f(x)=\sum x^$求平方即可,对于每颗子树容斥 复杂度就是所有的$Size$之和乘上$\log n$,即$n\log^ 阅读全文
posted @ 2019-12-30 17:28 chasedeath 阅读(242) 评论(0) 推荐(0)