随笔分类 -  OJ

摘要:"Mr. Panda and Fantastic Beasts" 题意 给出若干个字符串,找到一个最短的字典序最小的字符串且仅是第一个字符串的子串。 分析 对于这种多个字符串、重复的子串问题一般都要连接字符串加后缀数组解决(当然也存在其它方法)。 用一个未出现的字符连接多个字符串,计算出后缀数组,枚 阅读全文
posted @ 2017-07-28 23:42 ftae 阅读(660) 评论(0) 推荐(0)
摘要:"hdu6053" 题意 给出 $A$ 数组,问有多少种 $B$ 数组满足下面条件。 $1≤ B_i ≤ A_i$ For each pair $( l , r ) \ (1≤l≤r≤n) , gcd(b_l,b_{l+1}...b_r) ≥ 2$ 。 分析 首先肯定要去枚举 $gcd$ ,如果暴力 阅读全文
posted @ 2017-07-27 22:34 ftae 阅读(424) 评论(0) 推荐(0)
摘要:"ACdream1032" 题意 给出一棵树,每个节点有权值,问由 $1$ ~ $n$ 个节点组成的树块的权值和的最小值。 分析 首先发现 $n$ 很小,那么我们可以开一个二维数组 $dp[i][j]$ 表示以 $i$ 节点为树块的根节点且树块中节点的数量为 $j$ 时的最小值。 从 $u$ 节点出 阅读全文
posted @ 2017-07-27 22:32 ftae 阅读(171) 评论(0) 推荐(0)
摘要:"hdu6040" 题意 将一个函数运行 n 次,一共得到 n 个值,有 m 次询问,每次询问第 k 小的值。 分析 考察了 $nth\_element$ 函数的运用。$nth\_element(a, a + x, a + n)$ 使得 ( $a$ 数组下标范围 $[0, n)$ ) $a[x]$ 阅读全文
posted @ 2017-07-26 22:06 ftae 阅读(162) 评论(0) 推荐(0)
摘要:"hdu6035" 题意 给出一棵树,现在定义两点之间距离为两点间最短路径上颜色集合的大小。问任意两点间距离之和。 分析 换个方向,题目其实等价于求每种颜色在多少条路径上出现过(每种颜色对于答案的贡献),然后求和。 直接求不好求,但是我们可以求每种颜色在多少条路径上没有出现过,对于颜色 $a$,我们 阅读全文
posted @ 2017-07-26 15:01 ftae 阅读(1105) 评论(0) 推荐(0)
摘要:"hdu6038" 分析 求函数 $f$ 的构成方案,$f$ 确定下来后,$f$ 和 $b$ 的值也是一一对应的了( $f(i)=b_{f(a_i)}$ ),观察 $a$ 数组,代入 $f$ 函数,存在循环节,比如 $a[0] = 1, a[1] = 0$,那么循环节长度为 2,代入后,$f(0)= 阅读全文
posted @ 2017-07-25 22:17 ftae 阅读(469) 评论(0) 推荐(0)
摘要:"1405 树的距离之和" 题意 给定一棵无根树,假设它有n个节点,节点编号从1到n,求任意两点之间的距离(最短路径)之和。 分析 树形DP。 首先我们让 $1$ 为根。要开两个数组 $up \ down$ 分别记录上面点、下面的点到当前点的距离之和。那么对于每个点答案就是 $up[i] + dow 阅读全文
posted @ 2017-07-24 21:21 ftae 阅读(390) 评论(0) 推荐(0)
摘要:"poj3415" 题意 给定两个字符串,给出长度 $m$ ,问这两个字符串有多少对长度大于等于 $m$ 且完全相同的子串。 分析 首先连接两个字符串 A B,中间用一个特殊符号分割开。 按照 $sa$ 的顺序(即枚举 $height$ 值),进行分组,那么有公共前缀长大于等于 $m$ 的都分到了一 阅读全文
posted @ 2017-07-22 21:53 ftae 阅读(249) 评论(0) 推荐(0)
摘要:"poj3693" 题意 给出一个串,求重复次数最多的连续重复子串,输出字典序最小的。 分析 "论文" 例8(P21)。 Sparse Table算法预处理出任意两个后缀串的LCP。 code cpp include include include include include using nam 阅读全文
posted @ 2017-07-20 21:57 ftae 阅读(270) 评论(0) 推荐(0)
摘要:"poj2406" 题意 给出一个字符串,它是某个子串重复出现得到的,求子串最多出现的次数。 分析 后缀数组做的话得换上 DC3 算法。 那么子串的长度就是 $len height[rnk[0]]$ (当然必须保证字符串总长是子串长度的整数倍)。 如果字符串是 ,考虑 $height[rnk[0]] 阅读全文
posted @ 2017-07-20 21:54 ftae 阅读(779) 评论(1) 推荐(0)
摘要:"Distinct Substrings" 题意 求一个字符串有多少个不同的子串。 分析 又一次体现了后缀数组的强大。 因为对于任意子串,一定是这个字符串的某个后缀的前缀。 我们直接去遍历排好序后的后缀字符串(也就是 $sa$ 数组),每遍历到一个后缀字符串,会新添数量为这个后缀字符串的长度的前缀, 阅读全文
posted @ 2017-07-19 22:03 ftae 阅读(156) 评论(0) 推荐(0)
摘要:"poj1743" 题意 给出一个数字序列(串),现在要去寻找一个满足下列条件的子串: 1. 长度不小于 5 2. 存在重复的子串(如果把一个子串的所有数字都加上或减去一个值,与另一子串的数字对应相同,我们称它们重复) 3. 重复的子串之间不能重叠 分析 把相邻的数字作差(后面的减前面的)得到一个新 阅读全文
posted @ 2017-07-19 22:02 ftae 阅读(216) 评论(0) 推荐(0)
摘要:"poj2763" 题意 给定一个树形图,某人原来在 s 点,每条边(路)有通过的时间花费,有两种操作:1. 查询某人到 u 点花费的时间 2. 更新某条路的时间花费。 分析 权值在边上,可以把它们 “转移” 到点上,对于一条边,让 $dep$ 最大的点存储权值,比如说我们要更新 $(u, v)$ 阅读全文
posted @ 2017-07-18 22:57 ftae 阅读(1221) 评论(0) 推荐(0)
摘要:"Grass Planting" 题意 给出一棵树,树有边权。每次给出节点 (u, v) ,有两种操作:1. 把 u 到 v 路径上所有边的权值加 1。2. 查询 u 到 v 的权值之和。 分析 如果这些值不是在树上,而是在区间上,那么凭借线段树、树状数组可以很轻松的解决,但是在树上则不能直接操作。 阅读全文
posted @ 2017-07-18 22:54 ftae 阅读(219) 评论(0) 推荐(0)
摘要:"csu1811" 题意 给定一棵树,每个节点有颜色,每次仅删掉第 $i$ 条边 $(a_i, b_i)$ ,得到两颗树,问两颗树节点的颜色集合的交集。 分析 转化一下,即所求答案为每次删掉 $u$ 和 $u$ 的父亲节点所连的边后形成的两颗子树的颜色集合的交集。 那么我们要求的其实和 $u$ 的子 阅读全文
posted @ 2017-07-18 22:41 ftae 阅读(520) 评论(0) 推荐(0)
摘要:"csu1812" 题意 求三角形和矩形交的面积。 分析 半平面交。把三角形的三条边当作直线去切割矩形,最后求切割后的多边形面积即可。 code cpp include include include include using namespace std; const double eps = 1 阅读全文
posted @ 2017-07-17 22:38 ftae 阅读(242) 评论(0) 推荐(0)
摘要:"csu1808" 题意 n 个点间有 m 条地铁,每条地铁可能属于不同的线路,每条地铁有权值即通过时花费的时间,如果乘坐第 i 条地铁来到地铁站 s,再乘坐第 j 条地铁离开,需要花费额外的时间 $|c[i] c[j]|$ 即地铁线路之差。 分析 点本身不具有线路信息,如果直接对点做最短路,无法判 阅读全文
posted @ 2017-07-17 22:36 ftae 阅读(234) 评论(0) 推荐(0)
摘要:"csu1804" 题意 给出一个 n 个点、m 条边的有向无环图。求 $\sum_{i=1}^{n}\sum_{j=1}^{n}count(i,j)\cdot a_i\cdot b_j$,$count(i, j)$ 表示从 i 到 j 不同的路径数量。 分析 树形DP。 dp[i] 表示从 i 点 阅读全文
posted @ 2017-07-17 22:35 ftae 阅读(198) 评论(0) 推荐(0)
摘要:"uvalive4513" 题意 给出一个字符串,求其中最少出现 m 次的最长字符串。 分析 后缀数组做法:uva11107 的简化版, "uva11107题解" ,二分枚举字符串长,分组判断是否出现 m 次,注意求的是起始位置的最大值,可能出现多种长度相同的字符串,要更新到起始位置最大值。 has 阅读全文
posted @ 2017-07-17 22:33 ftae 阅读(232) 评论(0) 推荐(0)
摘要:"poj3264" 题意 询问区间最大值最小值之差。 分析 dp_max[i][j] 表示以 i 为起点,长度为 $2^j$ 的区间最大值。 利用递推预处理出区间最大值最小值。 code cpp include include include using namespace std; const i 阅读全文
posted @ 2017-07-16 22:21 ftae 阅读(167) 评论(0) 推荐(0)