随笔分类 - OJ
摘要:"uva11107" 题意 输入 n 个 DNA 序列,求出长度最大的字符串,使得它在超过一半的 DNA 序列中连续出现。如果有多解,按字典序输出。 分析 "论文" 后缀数组经典题。加深几个关键数组的印象。 和 poj2774 一样,都是要去连接字符串,保证分隔符不能和字符串内的字符相同,且不能重复
阅读全文
摘要:"poj2774" 题意 求两个字符串的最长公共子串 分析 "论文" 将两个字符串合并,中间插入分隔符,在找最大的 height 值的时候保证,两个字符串后缀的起始点分别来自原来的两个字符串。 code cpp include include include using namespace std;
阅读全文
摘要:"uvalive4108" 题意 按顺序给出 n 个矩形,每给出一个矩形,统计它在多长的部分是最高的,并把这个长度称为该矩形的覆盖度,求最后总的覆盖度(每次得到的矩形的覆盖度之和) 分析 线段树。用两个数组分别统计区间最小值和最大值,再用一个数组来存 lazy 标记,向下传递。只有大于等于区间最大值
阅读全文
摘要:"hdu5884" 题意 给出 n 个数,每次选择不超过 k 个数合并(删掉这些数,加入这些数的和),花费为合并的这些数的和,要求最后只剩下一个数,问 k 最小取多少。 分析 二分 k,合并数的时候可以按照哈夫曼树构树的原理来进行合并。因为新形成的数存在递增的单调性,所以可以开一个数组(队列)存储新
阅读全文
摘要:"uva10857" 题意 兔子希望在平面上 n 个点上放蛋,每个点最多放一个蛋,初始兔子在 (0, 0) 点,这里有无数个蛋,兔子可以回到这个点取蛋,兔子的速度为 $v 2^{ i}$(i 为携带蛋的数量)。对于每个点 (x, y) ,在 $720+x/2000$ 分钟后不能在该点放蛋了。问最多放
阅读全文
摘要:"hdu4055" 题意 给出一个长度为 n 1 的字符串,要求构造一个包含数字 [1, n] 的排列,从第二位开始,'I' 表示当前位数字比前一位大,'D' 表示当前位数字比前一位小,'?' 表示可大可小。问有多少满足条件的 n 的排列。 分析 设 dp[i][j] 为 [1, i] 已排列好,最
阅读全文
摘要:"Controlled Tournament" 题意 n 名选手进行淘汰赛,R[i][j] = 1 表示 i 能胜过 j。要求通过安排淘汰赛使得,m 选手获得最终胜利,问使得比赛数最少的方案数。 分析 设 f(i, h, S) 表示 i 选手获胜 比赛 h 场 参赛选手集合为 S 的比赛方案有多少种
阅读全文
摘要:"hdu3001" 题意 选择从任意一点出发,经过所有点的最小花费(经过每个点的次数不能多于 2 次)。 分析 类似于 "poj3311" 经过每个点的次数有限制,考虑用三进制数存储每个点被访问过的次数,其它和上面一题几乎相同。 code cpp include include include us
阅读全文
摘要:"poj3311" 题意 给出一个矩阵,i 行 j 列表示位置 i 到 j 的时间。 求从 0 点出发经过 1 到 n 所有点后并返回 0 点最短耗时。 分析 先用 Floyd 算法,求出两点之间最短路, dp[S][i] 表示访问到 i 这个点时所有点的状态,S 为二进制数,表示这个点是否访问过。
阅读全文
摘要:"poj1185" 题意 给出字母矩阵,只能在字母为 P 的位置放置大炮, 如图所示,每个大炮的射程固定,现在要求尽可能多的放大炮,且使得每个大炮都不在其它大炮的射程内。问最多能放多少。 分析 "poj3254" 很类似的一道题,但是注意到这道题,放置一个大炮后,不仅影响到与之相邻的下一行,同时对下
阅读全文
摘要:"poj3254" 题意 给出一个01矩阵,1表示当前这个位置可以放牛,要求放牛的方案保证牛不能左右或上下相邻,求方案数。 分析 dp[S][i]: 表示到 i 行时的状态S(用二进制数表示),那么状态转移就是 dp[S][i] += dp[S0][i 1] ,其中 S 为当前行合法状态,S0为上一
阅读全文
摘要:"hdu3507" 题意 给出 N 个数字,输出的时候可以选择连续的输出,每连续输出一串,它的费用是 这串数字和的平方加上一个常数 M。 分析 斜率优化dp,入门题。 "参考" "参考" 得到 dp 方程后,发现是O(n n)的复杂度,且 n 很大,考虑用斜率优化。 设 s[i] 为 1 到 i 的
阅读全文
摘要:"bzoj2440" 题意 求第 k 个不是完全平方数(除 1 以外)的正倍数的数。 分析 利用二分法求解,二分 x ,判断 x 是否是第 k 个数即可,那么我们就要计算 [1, x] 有几个符合条件的数。 首先本题用到容斥原理的思想, sum = 1 的倍数的数的个数 (4, 8, 9, ) 这些
阅读全文
摘要:"bzoj2301" 题意 求区间 [a, b] 和 区间 [c, d] 有多少对数 (x, y) 使得 gcd(x, y) = k 。 分析 "参考ppt" "参考blog" 考虑用容斥分成四次查询, 对于每次查询区间 [1, n] [1, m] 有多少对数使得 gcd = k ,等价于 [1,
阅读全文
摘要:"百度地图导航" 题意 给出 n 个城市, m 个城市群,每个城市群包含多个城市(一个城市可能被包含在多个城市群中),现在要修路,在城市与城市之间修路,或在城市群间修路,如果在城市群间修路,等价于两个城市群的城市两两各修一条路,问从城市 s 到 t 的最短路。 分析 问题主要是处理城市群间的相连。先
阅读全文
摘要:"腾讯消消乐" 题意 给出长度为 n 的序列,每次可以选择删除序列的一个连续区间,要求这一段区间内所有数最大公约数不小于 k ,删除后剩下的序列仍然构成连续序列。 定义 f(i) 为进行 i 次操作将整个序列删完的方案数。计算 $\sum_{i=1}^{n}{(f(i) \ast i)} \text
阅读全文
摘要:"1424 零树" 题意 给出一棵树,每次可以选择一个包含节点 1 的连通块,将所有的节点的权值同时加 1 或减 1 ,问最少多少次操作使所有节点权值变为 0 。 分析 这种题意简单的题目好处就是能很快知道自己会不会做,有些很长的英文题搞半天题意还理解错了。 树形DP。首先需要两个数组 d1 d2
阅读全文
摘要:"poj2728" 题意 给出 n 个点的坐标和它的高度,求一颗生成树使得树上所连边的两点高度差之和除以距离之和最小。 分析 "01分数规划" +最小生成树。 对于所有的边,在求最小生成树过程中有选或不选的问题, 首先根据01分数规划,我们要使 $ l = \frac{\sum_{i=1}^{n}
阅读全文
摘要:"UCloud 的安全秘钥" 题意 给出一个数组 s 串,和数组 t 串,那么如果两者长度相同且两者所含的数字全部相同,则说这两个串相似。 给定原始串 S ,以及 m 个询问 T 串,问 S 串有多少个连续子串和 T 串相似。 分析 2017年计蒜之道第五场的题目。题目很有趣,虽然比赛里只水出了中等
阅读全文
摘要:"poj2976" 题意 给出 a b 数组,一共 n 对数,其中最多可以去掉 k 对,问怎样使剩下比率(原始比率是 $ \frac{\sum_{i=1}^{n} a}{\sum_{i=1}^{n} b} 100 $)最大。 分析 "01分数规划" 设 $l=\frac{\sum a}{\sum b
阅读全文

浙公网安备 33010602011771号