08 2017 档案

摘要:"hdu6191" 题意 给你一棵带点权的树,每次查询 $u$ 和 $x$ ,求以 $u$ 为根结点的子树上的结点与 $x$ 异或后最大的结果。 分析 看到子树,直接上树上启发式合并,看到异或,上 $Trie$ 。 这道题就是两个经典的题目结合了一波。 树上启发式合并处理这种需要查询整个子树的题目尤 阅读全文
posted @ 2017-08-31 18:14 ftae 阅读(203) 评论(0) 推荐(0)
摘要:" 430 Div2 D" 题意 给出一些数,每次操作先将所有数异或一个值,再求这些数中没有出现过的最小的非负整数。 分析 对于更新操作,对于 $x$ 所有为 $1$ 的位给相应层添加一个标记,当查询时走到这一层,如果有这个标记,就要把左子树当作右子树,右子树当做左子树。 对于查询操作,显然优先走左 阅读全文
posted @ 2017-08-30 19:04 ftae 阅读(86) 评论(0) 推荐(0)
摘要:" 430 Div2 C" 题意 给出一棵带点权的树,每一个节点的答案为从当前节点到根节点路径上所有节点权值的最大公因子(在求最大共因子的时候可以选择把这条路径上的任意一点的权值置为0)。对于每一个节点单独考虑,输出最大的答案。 分析 本以为是一道树形DP,写完就 WA 了。 补题的时候呢时间复杂度 阅读全文
posted @ 2017-08-30 19:03 ftae 阅读(184) 评论(0) 推荐(0)
摘要:"Longest Common Substring" 题意 求两个串的最长公共子串。 分析 第一个串建后缀自动机,第二个串在自动机上跑,对于自动机上的结点(状态)而言,它所代表的最大长度为根结点到当前结点的长度,而它的前继结点的串一定是这个结点串的后缀串(或空串)。 匹配过程中一旦失配,自动机上的结 阅读全文
posted @ 2017-08-25 23:48 ftae 阅读(238) 评论(0) 推荐(0)
摘要:"hdu4333" 题意 给出一个长度为 $n$ 的数字,每次可以将最后一位放到前面,那么一共会有 $n$ 个数字,问有几个不同的数字比原来的数字大,小或相等。 分析 将字符串扩展到原来的两倍,然后求一发 EXKMP ,得到 $nxt$ 数组表示后缀串与整个串的最长公共前缀长度,那么要么有下个一个字 阅读全文
posted @ 2017-08-24 22:58 ftae 阅读(125) 评论(0) 推荐(0)
摘要:"hdu6162" 题意 给出一颗带点权的树,每次询问一对节点 $(u, v)$,问 $u$ 到 $v$ 的最短路径上所有节点权值在 $[c1, c2]$ 区间内的和。 分析 树链剖分,那么我们只需要处理一个区间内节点权值在 $[c1, c2]$ 之间的和。建一颗线段树,每个节点维护当前区间内所有的 阅读全文
posted @ 2017-08-22 22:53 ftae 阅读(188) 评论(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 阅读(178) 评论(0) 推荐(0)
摘要:"hdu6153" 题意 给出两个字符串,询问第二个字符串的所有后缀串在第一个字符串中的出现次数。 分析 将两个字符串逆序存储,将第二个字符串作为模板串,对第一个串进行 $KMP$ ,开一个数组 $cnt$ 记录模板串每一个前缀串的个数,最后用 $fail$ 数组去更新下 $cnt$ 数组。 cod 阅读全文
posted @ 2017-08-20 21:53 ftae 阅读(108) 评论(0) 推荐(0)
摘要:"hdu6158" 题意 初始有两个圆,按照标号去放圆,问放完 $n$ 个圆后的总面积。 分析 圆的反演的应用。 "参考blog" 设反演圆心为 $O$ 和反演半径 $R$ 圆的反演的定义: 已知一圆 $C$ ,圆心为 $O$ ,半径为 $R$ ,如果 $P$ 与 $P'$在过圆心 $O$ 的直线上 阅读全文
posted @ 2017-08-20 21:48 ftae 阅读(291) 评论(0) 推荐(0)
摘要:"hdu6156" 题意 求 $[2, 36]$ 进制下,给定区间内的数是回文数的个数。每存在一个回文数,答案加上该回文数的进制。 分析 10进制下回文数是 数位DP 很常见的问题,这道题只需要把在转化数字的时候转化成对应的进制即可。 多开一维数组表示某个进制下的方案数,$dp$ 数组只需要一次初始 阅读全文
posted @ 2017-08-19 23:09 ftae 阅读(305) 评论(0) 推荐(0)
摘要:"hdu6138" 题意 给出若干个字符串,每次查询两个字符串,求两个字符串的公共子串且在给出的某一个字符串中作为前缀的最大长度。 分析 求公共子串:后缀数组 判断前缀:字典树 求完后缀数组,遍历下 $height$ 数组,对于每个公共子串,都去跑下字典树。 这么暴力竟然没超时,还跑得飞快,数据好水 阅读全文
posted @ 2017-08-17 22:17 ftae 阅读(132) 评论(0) 推荐(0)
摘要:"uva10256" 题意 平面上存在两种颜色的点,问是否存在一条直线,使得任取一个红点和一个蓝点都在直线的异侧,这条直线不经过任何点。 分析 对每种颜色的点求一发凸包,问题等价于判断两个多边形是否相交或相切。 1. 判断是否有边相交 2. 判断是否有点在另一个多边形内或边上 code cpp in 阅读全文
posted @ 2017-08-17 22:15 ftae 阅读(318) 评论(0) 推荐(0)
摘要:"uva11168" 题意 给出一些点坐标,选定一条直线,所有点在直线一侧(或直线上),使得所有点到直线的距离平均值最小。 分析 显然直线一定会经过某两点(或一点),又要求点在直线某一侧,可以直接求出凸包,枚举每条边作为直线。 现在就要快速求出所有点到直线的距离,有求点到直线距离方程 $\frac{ 阅读全文
posted @ 2017-08-16 22:24 ftae 阅读(128) 评论(0) 推荐(0)
摘要:"zoj2318" 题意 一个平面上给出很多圆,其中一个圆为现在自己的位置,问这个圆能不能冲出其它圆的包围(不能与其它圆相交)。 分析 将所有圆心平移,使得自己的圆圆心处于原点,将所有圆半径增加自己圆的半径,这样自己的圆可以看成一个点,任意两圆相交我们都可以看作圆心间连了一条边,问题就转化成了一个点 阅读全文
posted @ 2017-08-16 22:20 ftae 阅读(110) 评论(0) 推荐(0)
摘要:"hdu6121" 题意 给出一棵树,$0$ 为根节点,节点 $i$ 的父节点标号是 $\lfloor\frac{i 1}{k}\rfloor$,求所有子树大小的异或和。 分析 找规律。在纸上画个十几个一定可以找到规律(亲测有效)。 虽然数据很大,但是我们可以特判掉 $k=1$ 的情况,同样有规律。 阅读全文
posted @ 2017-08-15 23:23 ftae 阅读(186) 评论(0) 推荐(0)
摘要:"hdu6127" 题意 二维平面上存在一些点,每个点都有权值,任意两点组成的线段的权值为这两点权值的乘积,选定一条经过原点的直线,问怎样使得它经过的线段的权值之和最大。 分析 题目等价于用一条直线将平面上的所有点分成两部分,那么答案就是两部分点的权值和的乘积。 比如说一条与 $y$ 轴重合的直线, 阅读全文
posted @ 2017-08-15 23:22 ftae 阅读(140) 评论(0) 推荐(0)
摘要:"837F Prefix Sums" 题意 定义函数 $p(x)$ 会返回 $x$ 这个数组的前缀和,定义 $A^i=p(A^{i 1}) \ (i 0)$,给出 $A^0$ 求使得 $A^i$ 中存在大于等于 $k$ 的数的最小的 $i$ 。 分析 打表~~容易发现~~当数的数量大于 $4$ 时, 阅读全文
posted @ 2017-08-14 21:55 ftae 阅读(152) 评论(0) 推荐(0)
摘要:" 428 Div2 D" 题意 给出一些数,现在要求找出一些数满足 $i_1 1$ ,记这些数的贡献为 $k gcd(a_{i_1}, a_{i_2}, ..., a_{i_k}) $ 。 求每种方案的贡献之和。 分析 不得不说和 "hdu6053" 很类似,其实还要简单不少。 考虑枚举 $gcd 阅读全文
posted @ 2017-08-14 21:54 ftae 阅读(111) 评论(0) 推荐(0)
摘要:"poj3233" 题意 给出一个 $n \times n$ 的矩阵 $A$ ,求 $A + A^2 + A^3 + ... + A^k$ 。 分析 构造矩阵 $$ \begin{bmatrix} A & E \\ 0 & E \\ \end{bmatrix} $$ 记为 $B$ ,其中 $A$ 为 阅读全文
posted @ 2017-08-12 21:06 ftae 阅读(923) 评论(0) 推荐(0)
摘要:" 427 Div2 D" 题意 给出一个字符串,求它的子串中为 $k palindrome$ 的个数。 $1 palindrome$ 要求是一个回文串。 $k palindrome (k 1)$满足以下条件: 是一个回文串 它的左右两边是一个不为空的 $(k 1) palindromes$ 。 分 阅读全文
posted @ 2017-08-11 22:21 ftae 阅读(136) 评论(0) 推荐(0)
摘要:"837E Vasya's Function" 题意 1. $f(a, 0) = 0$ 2. $f(a, b)=1+f(a, b gcd(a,b))$ 给出 $a, b$ ,求 $f(a, b)$。 分析 首先找出所有 $a$ 的因子,然后找出是每个因子倍数的数且小于等于 $b$ 的最大值,记录每个 阅读全文
posted @ 2017-08-09 22:41 ftae 阅读(385) 评论(0) 推荐(0)
摘要:"hdu6086" 题意 字符串只由 $01$ 组成,求长度为 $2L$ 且包含给定的 $n$ 个子串的字符串的个数(且要求字符串满足 $s[i] \neq s[|s| i + 1]$)。 分析 没有想到可以暴力预处理中间那些字符。 官方题解: 如果没有反对称串的限制,直接求一个长度为 $L$ 的 阅读全文
posted @ 2017-08-09 22:36 ftae 阅读(186) 评论(0) 推荐(0)
摘要:"hdu2825" 题意 给出一些字符串,要求构造一个长度为 $n$ 的字符串至少包括其中的 $k$ 个,问有多少种字符串满足条件。 分析 AC自动机 构造状态转移,然后 状态压缩DP 即可。 $dp[i][j][k]$ 表示长度为 $i$ 在 AC自动机上的状态为 $j$ 已包含的字符串为 $k$ 阅读全文
posted @ 2017-08-09 22:23 ftae 阅读(135) 评论(0) 推荐(0)
摘要:"poj2778" 题意 构造只包含 $A, T, C, G$ 的字符串,且满足不出现指定的一些字符串,问长度为 $n$ 的字符串有多少种 ? 分析 AC 自动机 + 矩阵快速幂的~~神题~~ ,知识点很多。。。 AC 自动机为了给不同的状态之间建边,矩阵快速幂是为了加速状态转移。 比如说一共有 $ 阅读全文
posted @ 2017-08-09 22:15 ftae 阅读(134) 评论(0) 推荐(0)
摘要:" 426 Div2 D" 题意 给出 $n$ 个数字,将这些数字隔成 $k$ 个部分(相对位置不变),统计每个部分有几个不同数字,然后全部加起来求和,问和最大是多少。 分析 很容易想到 $DP$ 方程,$dp[i][j] = max(dp[i][j], dp[k][j 1] + size(k + 阅读全文
posted @ 2017-08-05 22:27 ftae 阅读(410) 评论(0) 推荐(0)
摘要:"uestc1633" 题意 给你一个大小为 $n$ 的集合 $S$ ,集合里有 $n$ 个互不相同正整数,有 $q$ 个询问,每次询问是否能选择 $S$ 中的一些数字 ( 同一个数字可以选择多次,也可以任何数字都不选),使它们相加的和为 $m$ 。 分析 这种题型 ~~竟然~~ 可以套用最短路的模 阅读全文
posted @ 2017-08-05 22:26 ftae 阅读(138) 评论(0) 推荐(0)
摘要:"hdu6070" 题意 给出 $n$ 个数, $\frac{x}{y}$ 表示某个区间不同数的个数除以区间的长度,求 $\frac{x}{y}$ 最小值。 分析 设 $size(l, r)$ 表示 $[l, r]$ 这个区间内不同数的个数,那么求得就是 $\frac{size(l, r)}{r l 阅读全文
posted @ 2017-08-05 22:24 ftae 阅读(164) 评论(0) 推荐(0)
摘要:"hdu6071" 题意 四个点连接形成一个环,给出相邻两个点的距离,求从点 $2$ 出发再回到 $2$ 的路程大于等于 $K$ 的最小值。 分析 首先我们让 $w=min(d12, d23)$ ,那么如果存在一个合法的路程 $k$ 必然会存在路程 $k + 2 w$ 。 让 $d[x][v]$ 表 阅读全文
posted @ 2017-08-05 22:24 ftae 阅读(550) 评论(0) 推荐(0)
摘要:"hdu6059" 题意 给定数组 $A$ ,问有多少对下标 $(i, j, k)$ 满足 $i typedef long long ll; using namespace std; const int MAXN = 2e6 + 10; int n; int a[MAXN]; int root, L 阅读全文
posted @ 2017-08-02 22:28 ftae 阅读(124) 评论(0) 推荐(0)
摘要:"hdu4757" 题意 给出一棵树,每个节点有权值,每次查询节点 $(u, v)$ 以及 $x$ ,问 $u$ 到 $v$ 路径上的某个节点与 $x$ 异或最大的值是多少。 分析 Trie 的新姿势! 如果直接问 $x$ 与某个区间中哪个数异或后最大,那么直接把区间所有数转化成二进制数(从高到低位 阅读全文
posted @ 2017-08-02 22:26 ftae 阅读(741) 评论(0) 推荐(0)
摘要:"csu1216" 题意 给定一些数,求这些数中两个数的异或值最大的那个值。 分析 转化成二进制数存入字典树,比如说要查询 $0011$ ,显然和 $1100$ 结合最优,所以我们直接在字典树上寻找 $1100$ ,如果某一位没找到不管它继续往下找,因为我们是从高到低位存的,所以找得到的一定是最优的 阅读全文
posted @ 2017-08-02 22:23 ftae 阅读(138) 评论(0) 推荐(0)
摘要:"hdu6058" 题意 定义 $f(l, r, k)$ 函数为区间 $[l, r]$ 第 $k$ 大的数,如果 $r l + 1 typedef long long ll; using namespace std; const int MAXN = 5e5 + 10; int n, k; int 阅读全文
posted @ 2017-08-01 21:55 ftae 阅读(229) 评论(0) 推荐(0)