随笔分类 -  OJ

摘要:"hdu6230" 题意 给出一个字符串,问有多少个子串 $S "1..3n 2" $ 满足 $S[i]=S[2n i]=S[2n+i 2] (1\leq i \leq n)$ 。 分析 Manacher 算法预处理下以每个下标为中心的最长回文串的长度。 我们要找的子串由两个奇数长度的回文串重叠部分 阅读全文
posted @ 2017-11-13 22:13 ftae 阅读(143) 评论(0) 推荐(0)
摘要:"hdu6231" 题意 给出一些数字,对于任意长度不小于 $k$ 的区间,把第 $k$ 大数加入到一个新的数组 $B$ 中,求 $B$ 数组第 $m$ 大数。 分析 二分答案 $x$ ,枚举左端点 $l$ ,找到最小的 $r$ 使得区间 $[l,r]$ 中有至少 $k$ 个数大于等于 $x$,那么 阅读全文
posted @ 2017-11-12 21:45 ftae 阅读(247) 评论(0) 推荐(0)
摘要:"zoj3988" 题意 如果一个集合 $\{i,j\}$ 满足 $i\neq j$ 且 $a[i]+a[j]$ 是素数,则称之为素数集合。 给出一些数字,这些数字可以组成多种素数集合,从这些集合中最多选择 $k$ 个集合,问这些集合涉及到的数的数量最大值为多少。 分析 存在匹配关系即 $a[i]+ 阅读全文
posted @ 2017-11-09 13:12 ftae 阅读(220) 评论(0) 推荐(0)
摘要:"hdu4417" 题意 给出一些数,每次询问某一区间有多少数不超过 $x$ 。 分析 题目本身没什么好说,这道题有多种解法。 1. 主席树模板题 2. 树状数组 树状数组的解法还是蛮有启发性的,首先如果数据不大,我们可以用二维树状数组去做,将每个数的大小看做第二维。但可惜,数据很大,这样显然会爆掉 阅读全文
posted @ 2017-10-31 00:07 ftae 阅读(126) 评论(0) 推荐(0)
摘要:"hdu4605" 题意 给出一棵带权值的树,多个查询 $v, X$,某个重量为 $X$ 的小球从根结点出发,根据 $X$ 与当前结点权值的大小关系决定走左右子结点的概率,问到达 $v$ 结点的概率。 分析 先离散化,再树状数组维护路径上结点的值,查询离线处理。 code cpp include u 阅读全文
posted @ 2017-10-28 18:31 ftae 阅读(164) 评论(0) 推荐(0)
摘要:"poj2155" 题意 二维区间更新,单点查询。 分析 二维线段树。 也可以用二维树状数组去做,维护矩阵前缀和。 code cpp include using namespace std; typedef long long ll; define lson l, m, rt 1; subBuild 阅读全文
posted @ 2017-10-28 11:07 ftae 阅读(159) 评论(0) 推荐(0)
摘要:"hdu1823" 题意 单点更新,求二维区间最值。 分析 二维线段树模板题。 二维线段树实际上就是树套树,即每个结点都要再建一颗线段树,维护对应的信息。 一般一维线段树是切割某一可变区间直到满足所要查询区间,求最值、求和等,二维就是先切割第一维的区间,再去切割第二维的区间。 code 阅读全文
posted @ 2017-10-26 21:22 ftae 阅读(1102) 评论(0) 推荐(0)
摘要:"hdu2665" 题意 求区间第 k 小。 分析 "参考" 这类题目做法挺多的,例如 "划分树" 。 这里使用主席树再写一发,不得不说主席树相比而言要好写的多,比起普通线段树,主席树就是复用了线段树共有的信息。 可持久化数据结构讲究的就是复用共有的信息, "可持久化 Trie" 的思想也是差不多的 阅读全文
posted @ 2017-10-14 21:10 ftae 阅读(620) 评论(0) 推荐(0)
摘要:"hdu5558" 题意 给出一个字符串,按照特殊规则进行加密。 假设已经加密了前 $i$ 个字符,从第 $i+1$ 个字符开始找到 $S[i..N]$ 的长度为 $K$ 的最长前缀等于 $S[T...T+K 1]$ ,其中 $T using namespace std; typedef long 阅读全文
posted @ 2017-10-03 18:54 ftae 阅读(170) 评论(0) 推荐(0)
摘要:"hdu5514" 题意 $m$ 个石子绕成一圈,编号$[0, m 1]$。有 $n$ 个青蛙从 $0$ 号石子出发,给出每个青蛙的步长,青蛙无限跑圈。问哪些石子至少被一个青蛙经过,求这些石子的编号之和。 分析 假设某个青蛙的步长 $x$,则一共会经过 $ \frac{m 1}{x} + 1$ 个石 阅读全文
posted @ 2017-10-01 22:19 ftae 阅读(164) 评论(0) 推荐(0)
摘要:"hdu6191" 题意 给你一棵带点权的树,每次查询 $u$ 和 $x$ ,求以 $u$ 为根结点的子树上的结点与 $x$ 异或后最大的结果。 分析 看到子树,直接上树上启发式合并,看到异或,上 $Trie$ 。 这道题就是两个经典的题目结合了一波。 树上启发式合并处理这种需要查询整个子树的题目尤 阅读全文
posted @ 2017-08-31 18:14 ftae 阅读(209) 评论(0) 推荐(0)
摘要:"Longest Common Substring" 题意 求两个串的最长公共子串。 分析 第一个串建后缀自动机,第二个串在自动机上跑,对于自动机上的结点(状态)而言,它所代表的最大长度为根结点到当前结点的长度,而它的前继结点的串一定是这个结点串的后缀串(或空串)。 匹配过程中一旦失配,自动机上的结 阅读全文
posted @ 2017-08-25 23:48 ftae 阅读(243) 评论(0) 推荐(0)
摘要:"hdu6166" 题意 给出一个有向图,选择 $k$ 个点,问这 $k$ 个点任意两点距离的最小值。 分析 按结点编号的二进制位,每次可以把所有点分到两个集合,那么求两个集合的点间的最短路即可( $0$作为源点,$n+1$作为汇点)。 正确性的保证:编号的唯一性。任意两点一定存在某一次不在同一集合 阅读全文
posted @ 2017-08-25 23:47 ftae 阅读(176) 评论(0) 推荐(0)
摘要:"hdu4333" 题意 给出一个长度为 $n$ 的数字,每次可以将最后一位放到前面,那么一共会有 $n$ 个数字,问有几个不同的数字比原来的数字大,小或相等。 分析 将字符串扩展到原来的两倍,然后求一发 EXKMP ,得到 $nxt$ 数组表示后缀串与整个串的最长公共前缀长度,那么要么有下个一个字 阅读全文
posted @ 2017-08-24 22:58 ftae 阅读(134) 评论(0) 推荐(0)
摘要:"hdu6162" 题意 给出一颗带点权的树,每次询问一对节点 $(u, v)$,问 $u$ 到 $v$ 的最短路径上所有节点权值在 $[c1, c2]$ 区间内的和。 分析 树链剖分,那么我们只需要处理一个区间内节点权值在 $[c1, c2]$ 之间的和。建一颗线段树,每个节点维护当前区间内所有的 阅读全文
posted @ 2017-08-22 22:53 ftae 阅读(201) 评论(0) 推荐(0)
摘要:"hdu6155" 题意 给出一个只由 $01$ 组成的字符串 $s$,有两种操作: 1. 翻转区间 $[l, r]$ 2. 查询区间 $[l, r]$ 有多少不同的子串 分析 首先考虑怎么统计区间有多少不同的子串。 $dp[i][0]$ 表示以 $s[i]=0$ 结尾的字符串的个数,$dp[i][ 阅读全文
posted @ 2017-08-22 22:52 ftae 阅读(188) 评论(0) 推荐(0)
摘要:"hdu6153" 题意 给出两个字符串,询问第二个字符串的所有后缀串在第一个字符串中的出现次数。 分析 将两个字符串逆序存储,将第二个字符串作为模板串,对第一个串进行 $KMP$ ,开一个数组 $cnt$ 记录模板串每一个前缀串的个数,最后用 $fail$ 数组去更新下 $cnt$ 数组。 cod 阅读全文
posted @ 2017-08-20 21:53 ftae 阅读(113) 评论(0) 推荐(0)
摘要:"hdu6158" 题意 初始有两个圆,按照标号去放圆,问放完 $n$ 个圆后的总面积。 分析 圆的反演的应用。 "参考blog" 设反演圆心为 $O$ 和反演半径 $R$ 圆的反演的定义: 已知一圆 $C$ ,圆心为 $O$ ,半径为 $R$ ,如果 $P$ 与 $P'$在过圆心 $O$ 的直线上 阅读全文
posted @ 2017-08-20 21:48 ftae 阅读(308) 评论(0) 推荐(0)
摘要:"hdu6156" 题意 求 $[2, 36]$ 进制下,给定区间内的数是回文数的个数。每存在一个回文数,答案加上该回文数的进制。 分析 10进制下回文数是 数位DP 很常见的问题,这道题只需要把在转化数字的时候转化成对应的进制即可。 多开一维数组表示某个进制下的方案数,$dp$ 数组只需要一次初始 阅读全文
posted @ 2017-08-19 23:09 ftae 阅读(312) 评论(0) 推荐(0)
摘要:"hdu6138" 题意 给出若干个字符串,每次查询两个字符串,求两个字符串的公共子串且在给出的某一个字符串中作为前缀的最大长度。 分析 求公共子串:后缀数组 判断前缀:字典树 求完后缀数组,遍历下 $height$ 数组,对于每个公共子串,都去跑下字典树。 这么暴力竟然没超时,还跑得飞快,数据好水 阅读全文
posted @ 2017-08-17 22:17 ftae 阅读(143) 评论(0) 推荐(0)