07 2017 档案

摘要:"hdu6049" 题意 给出一串由 $[1, n]$ 组成的 $n$ 个数,每个数字都不相同。现在要尽可能的分成多个块,每个块内的数可以任意排序,且分完块后可以交换两个块的位置,问使得最后序列有序可以最多分成几个块。 分析 首先暴力预处理出 $f[i][j]$ 表示区间 $[i, j]$ 最多可以 阅读全文
posted @ 2017-07-30 21:22 ftae 阅读(220) 评论(0) 推荐(0)
摘要:"hdu6052" 题意 给出一个 $n m$ 的网格矩阵,每个格子都有颜色,随机选出一个子矩阵,问颜色种数的期望。 分析 那么我们可以去算所有矩阵的颜色种数之和,也就是每种颜色出现过的矩阵的个数之和,除以子矩阵的个数就是答案。 为了避免重复,我们要规定哪些矩阵属于某个格子。如果一些格子颜色为 $1 阅读全文
posted @ 2017-07-30 21:21 ftae 阅读(119) 评论(0) 推荐(0)
摘要:"hdu6041" 题意 给出一个 "仙人掌" 。 如果一个无向连通图的任意一条边最多属于一个简单环,我们就称之为仙人掌。所谓简单环即不经过重复的结点的环。 求前 $K$ 小生成树 。 分析 仙人掌中每个环中我们最多可以删掉一条边,题目就变成了有 $M$ 个数组,每次从每个数组中分别取一个数字并求和 阅读全文
posted @ 2017-07-30 21:20 ftae 阅读(120) 评论(0) 推荐(0)
摘要:"hdu1269" 题意 判断对于任意两点是否都可以互相到达(判断有向图强连通分量个数是否为 1 )。 分析 Tarjan 算法实现。 code cpp include typedef long long ll; using namespace std; const int MAXN = 2e5 + 阅读全文
posted @ 2017-07-30 21:17 ftae 阅读(822) 评论(0) 推荐(0)
摘要:"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 阅读(426) 评论(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)
摘要:" 425 Div2 D" 题意 给出一个树形图,每次询问给出三个点,从其中选择两个作为起始点,一个终点,求从两个起始点出发(走最短路)到达终点经过的共同的点最多的数量。 分析 这种树上点与点之间距离有关的问题大多与 LCA 有关,那么我暴力枚举每个点分别作为起始点、终点,求下最大距离就好了。 co 阅读全文
posted @ 2017-07-25 22:16 ftae 阅读(196) 评论(0) 推荐(0)
摘要:"1405 树的距离之和" 题意 给定一棵无根树,假设它有n个节点,节点编号从1到n,求任意两点之间的距离(最短路径)之和。 分析 树形DP。 首先我们让 $1$ 为根。要开两个数组 $up \ down$ 分别记录上面点、下面的点到当前点的距离之和。那么对于每个点答案就是 $up[i] + dow 阅读全文
posted @ 2017-07-24 21:21 ftae 阅读(391) 评论(0) 推荐(0)
摘要:"poj3415" 题意 给定两个字符串,给出长度 $m$ ,问这两个字符串有多少对长度大于等于 $m$ 且完全相同的子串。 分析 首先连接两个字符串 A B,中间用一个特殊符号分割开。 按照 $sa$ 的顺序(即枚举 $height$ 值),进行分组,那么有公共前缀长大于等于 $m$ 的都分到了一 阅读全文
posted @ 2017-07-22 21:53 ftae 阅读(250) 评论(0) 推荐(0)
摘要:"825F String Compression" 题意 给出一个字符串,你要把它尽量压缩成一个短的字符串,比如一个字符串 你可以转化成 ,长度为 3,比如 转化成 ,长度为 7, 转化为 ,长度为 3。 分析 求转换后的最短字符串,那么怎么去组合字符串中的子串是关键。 考虑 dp, dp[1... 阅读全文
posted @ 2017-07-21 21:25 ftae 阅读(741) 评论(2) 推荐(0)
摘要:"825E Minimal Labels" 题意 给出 m 条有向边,组成有向无环图,输出一个 1 到 n 组成的排列,每个数只能出现一次,表示每个点的标号。如果有边 $(u, v)$ 那么 $label_u using namespace std; const int MAXN = 1e6 + 1 阅读全文
posted @ 2017-07-21 21:24 ftae 阅读(586) 评论(0) 推荐(0)
摘要:"poj3693" 题意 给出一个串,求重复次数最多的连续重复子串,输出字典序最小的。 分析 "论文" 例8(P21)。 Sparse Table算法预处理出任意两个后缀串的LCP。 code cpp include include include include include using nam 阅读全文
posted @ 2017-07-20 21:57 ftae 阅读(271) 评论(0) 推荐(0)
摘要:"poj2406" 题意 给出一个字符串,它是某个子串重复出现得到的,求子串最多出现的次数。 分析 后缀数组做的话得换上 DC3 算法。 那么子串的长度就是 $len height[rnk[0]]$ (当然必须保证字符串总长是子串长度的整数倍)。 如果字符串是 ,考虑 $height[rnk[0]] 阅读全文
posted @ 2017-07-20 21:54 ftae 阅读(779) 评论(1) 推荐(0)
摘要:"570D Tree Requests" 题意 给出一棵树,每个节点上有字母,查询 u k,问以 u 为根节点的子树下,深度为 k 的所有子节点上的字母经过任意排列是否能构成回文串。 分析 一个数组 $C[i][j]$ 表示深度为 $i$ 字母为 $j$ 的数量,数组 $odd[i]$ 表示深度为 阅读全文
posted @ 2017-07-19 22:07 ftae 阅读(276) 评论(0) 推荐(0)
摘要:"246E Blood Cousins Return" 题意 给出一棵家谱树,定义从 u 点向上走 k 步到达的节点为 u 的 k ancestor,每个节点有名字,名字不唯一。多次查询,给出 u k,问以 u 为根节点的子树下有多少个深度为 dep[u] + k 的节点(dep[u] 为节点 u 阅读全文
posted @ 2017-07-19 22:05 ftae 阅读(385) 评论(0) 推荐(0)
摘要:"Distinct Substrings" 题意 求一个字符串有多少个不同的子串。 分析 又一次体现了后缀数组的强大。 因为对于任意子串,一定是这个字符串的某个后缀的前缀。 我们直接去遍历排好序后的后缀字符串(也就是 $sa$ 数组),每遍历到一个后缀字符串,会新添数量为这个后缀字符串的长度的前缀, 阅读全文
posted @ 2017-07-19 22:03 ftae 阅读(157) 评论(0) 推荐(0)
摘要:"poj1743" 题意 给出一个数字序列(串),现在要去寻找一个满足下列条件的子串: 1. 长度不小于 5 2. 存在重复的子串(如果把一个子串的所有数字都加上或减去一个值,与另一子串的数字对应相同,我们称它们重复) 3. 重复的子串之间不能重叠 分析 把相邻的数字作差(后面的减前面的)得到一个新 阅读全文
posted @ 2017-07-19 22:02 ftae 阅读(217) 评论(0) 推荐(0)
摘要:"poj2763" 题意 给定一个树形图,某人原来在 s 点,每条边(路)有通过的时间花费,有两种操作:1. 查询某人到 u 点花费的时间 2. 更新某条路的时间花费。 分析 权值在边上,可以把它们 “转移” 到点上,对于一条边,让 $dep$ 最大的点存储权值,比如说我们要更新 $(u, v)$ 阅读全文
posted @ 2017-07-18 22:57 ftae 阅读(1223) 评论(0) 推荐(0)
摘要:"Grass Planting" 题意 给出一棵树,树有边权。每次给出节点 (u, v) ,有两种操作:1. 把 u 到 v 路径上所有边的权值加 1。2. 查询 u 到 v 的权值之和。 分析 如果这些值不是在树上,而是在区间上,那么凭借线段树、树状数组可以很轻松的解决,但是在树上则不能直接操作。 阅读全文
posted @ 2017-07-18 22:54 ftae 阅读(219) 评论(0) 推荐(0)
摘要:"208E Blood Cousins" 题意 给出一棵家谱树,定义从 u 点向上走 k 步到达的节点为 u 的 k ancestor。多次查询,给出 u k,问有多少个与 u 具有相同 k ancestor 的节点。 分析 设 rt 为 u 的 k ancestor。问题可以转换成在以 rt 为根 阅读全文
posted @ 2017-07-18 22:52 ftae 阅读(422) 评论(0) 推荐(0)
摘要:"600E Lomsat gelral" 题意 给出一颗以 1 为根的树,每个点有颜色,如果某个子树上某个颜色出现的次数最多,则认为它在这课子树有支配地位,一颗子树上,可能有多个有支配的地位的颜色,对每颗子树分别求有支配地位的颜色的和(把颜色这个权值相加)。 分析 树上启发式合并模板题。 "参考bl 阅读全文
posted @ 2017-07-18 22:48 ftae 阅读(237) 评论(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 阅读(169) 评论(0) 推荐(0)
摘要:"uva11107" 题意 输入 n 个 DNA 序列,求出长度最大的字符串,使得它在超过一半的 DNA 序列中连续出现。如果有多解,按字典序输出。 分析 "论文" 后缀数组经典题。加深几个关键数组的印象。 和 poj2774 一样,都是要去连接字符串,保证分隔符不能和字符串内的字符相同,且不能重复 阅读全文
posted @ 2017-07-16 22:18 ftae 阅读(326) 评论(0) 推荐(0)
摘要:"poj2774" 题意 求两个字符串的最长公共子串 分析 "论文" 将两个字符串合并,中间插入分隔符,在找最大的 height 值的时候保证,两个字符串后缀的起始点分别来自原来的两个字符串。 code cpp include include include using namespace std; 阅读全文
posted @ 2017-07-16 22:17 ftae 阅读(217) 评论(0) 推荐(0)
摘要:"uvalive4108" 题意 按顺序给出 n 个矩形,每给出一个矩形,统计它在多长的部分是最高的,并把这个长度称为该矩形的覆盖度,求最后总的覆盖度(每次得到的矩形的覆盖度之和) 分析 线段树。用两个数组分别统计区间最小值和最大值,再用一个数组来存 lazy 标记,向下传递。只有大于等于区间最大值 阅读全文
posted @ 2017-07-16 22:14 ftae 阅读(142) 评论(0) 推荐(0)
摘要:" 424 Div2 E" 题意 给出一个 n 个数的数列,从前往后取数,如果第一个数是当前数列的最小值,则取出,否则将它放到数列尾端,问使数列为空需要多少步操作。 分析 用数据结构去模拟。 线段树维护区间最小值及取得最小值的位置。树状数组维护仍存在的数的个数( 1 表示未取,0 表示已取)。 首先 阅读全文
posted @ 2017-07-15 21:51 ftae 阅读(175) 评论(0) 推荐(0)
摘要:" 424 Div2 C" 题意 给出 k 个分数,初始分数未知,按顺序把这 k 个分数加到初始分数上,已知 n 个加入分数后的结果(无序),问初始分数有多少种可能。 分析 也就是说这 n 个结果,它们之间的差是确定的(排序之后作差),对 k 个分数求前缀和,分别枚举每一个数作为起点,是否能找到后面 阅读全文
posted @ 2017-07-15 21:50 ftae 阅读(94) 评论(0) 推荐(0)
摘要:" 423 Div2 D" 题意 构造一个 n 个节点的树,恰好有 k 个叶子节点 (叶子节点的定义是只与树上的某一个节点存在连边),要求任意两个叶子节点的距离的最大值最小,距离为两个节点间边的数量,输出距离的最大值,以及 n 1 条边。 分析 构造 “星型树” ,节点 1 为中心,首先连 k 条边 阅读全文
posted @ 2017-07-13 22:42 ftae 阅读(149) 评论(0) 推荐(0)
摘要:" 423 Div2 C" 题意 给出 n 个字符串以及他们在 S 串中出现的位置,求字典序最小的 S 串。保证给出的字符串不会冲突。 分析 模拟就好。用并查集思想优化,数组 nxt[i] 表示从 i 开始 接下来还未填字母的第一个位置。初始化 。 code cpp include using na 阅读全文
posted @ 2017-07-13 16:48 ftae 阅读(107) 评论(0) 推荐(0)
摘要:"818E Card Game Again" 题意 给出一个数列,选择连续的一段使得这些数字的乘积是 k 的倍数,问合法的方案数。 分析 尺取法。设 num 为连续的数的乘积,只要对于 k 的每个素因子,num 相应的素因子的个数大于等于它。那么不仅这个数,后面乘上任意数都是 k 的倍数。这时候就不 阅读全文
posted @ 2017-07-11 17:03 ftae 阅读(317) 评论(0) 推荐(0)
摘要:"818D Multicolored Cars" 题意 在 1 到 n 时刻,有 n 量有颜色的车通过,用数字表示颜色,Alice 选择一个颜色A,要求 Bob 选择一个颜色B,使得对于任意时刻 cnt(B) = cnt(A),即通过的颜色为 B 的车始终不小于颜色为 A 的车。求任意满足条件的解, 阅读全文
posted @ 2017-07-08 22:57 ftae 阅读(311) 评论(0) 推荐(0)
摘要:" 422 Div2 D" 题意 假设有 n 个人比赛,每次比赛进行分组,每组人数必须相同,如果一组有 x 人,则那一组要比赛 $ \frac{x (x 1)}{2}$次,最终一人获胜,其它人淘汰,不同回合的 x 可以不同,设最终经过 f(n) 次比赛比赛结束(产生冠军)。给出 t, l, r 求 阅读全文
posted @ 2017-07-06 14:01 ftae 阅读(103) 评论(0) 推荐(0)
摘要:" 421 Div1 C" 题意 在 (0, n) 和 (m, 0) 处各有一个装置,从起始点(0, 0)出发,首先走短路到 (m, 0) 拿起装置回到起始点,再去 (0, n) 处拿起装置回到起始点。当 (m, 0) 处的装置被触碰后,对于后面所有时刻,如果存在某一时刻有一点 (x, y) 和其余 阅读全文
posted @ 2017-07-05 13:32 ftae 阅读(254) 评论(0) 推荐(0)