10 2018 档案

摘要:传送门 题目大意就是给定一个长度为 n 的正整数序列 A ,求一个平均数最大的,长度不小于 L 的子序列。 思路: 二分答案。 Code: 阅读全文
posted @ 2018-10-31 14:50 落笔映惆怅丶 阅读(259) 评论(0) 推荐(0)
摘要:传送门 思路: 先按学分从大到小排序,根据贪心的思想尽可能地让作业的完成时间延后,这样就能有更多空间给那些限制比较严格的作业 设 f [ i ] 为点 i 向左的最小空闲时间 对于一个限制 t 的作业,我们将它放在 f [ t ] 上,同时使 f [ t ] = f [ t ] - 1(表示这个时间 阅读全文
posted @ 2018-10-31 11:48 落笔映惆怅丶 阅读(171) 评论(0) 推荐(0)
摘要:传送门 思路: 动态规划,设 f [ i ][ j ] 表示小鸟到达坐标( i , j ) 所要点击屏幕的最少次数,如果小鸟无法到达( i , j ),则 f [ i ][ j ] = INF。 转移,考虑小鸟上升,和下降两种状态。 因为,在一个点上升次数不限,下降只有一次。 所以上升可以用 完全背 阅读全文
posted @ 2018-10-30 11:14 落笔映惆怅丶 阅读(329) 评论(0) 推荐(0)
摘要:传送门 思路: 类似于 袁绍的刁难 , 一道二进制的模拟题。 先将:将原先的瓶子数 n 转换成二进制,二进制中 1 的个数就是合并后剩下的瓶子个数 。 主要利用树状数组的 lowbit 函数: 若二进制 1 的个数 > k ,不断将二进制中最低位的 1 加 1 ,重新统计 1 的个数 ,直到 1 的 阅读全文
posted @ 2018-10-29 10:04 落笔映惆怅丶 阅读(269) 评论(0) 推荐(0)
摘要:传送门 思路: 真的是一道送命题啊。 假定只有 5 个将领的时候,各个将领的武力值为:1、3、9、27、81。 首先,对于每个将领只有取与不取两种状态。而且,任意一个将领之前的所有将领的武力值全部加起来也不会超过这个将领的武力值。 假设第 n 个将领之前的全部都取了,武力总值为第 k 小。则第 k+ 阅读全文
posted @ 2018-10-28 12:49 落笔映惆怅丶 阅读(172) 评论(0) 推荐(0)
摘要:传送门 思路: 利用公式: C( n,r ) = C( n-1,r ) + C( n-1,r-1 ) 由此可以将计算 C( n,r ) 的过程化为加法来做。 可以看出,C( n,r ) 其实就是求杨辉三角的第 n 行、第 r 列上的数(行列从 0 开始)。 先 N2 暴力地预处理出杨辉三角的各个项, 阅读全文
posted @ 2018-10-27 16:56 落笔映惆怅丶 阅读(214) 评论(0) 推荐(0)
摘要:传送门 思路: 设 f [ i ][ j ][ k ][ 0/1 ] 表示 A 串匹配到第 i 个,B 串匹配到第 j 个,已经匹配到第 k 段,0: A[ i ] 与 B[ j ] 不匹配, 1: A[ i ] 与 B[ j ] 匹配。 状态转移可分为 A[ i ] 与 B[ j ] 匹配和不匹配 阅读全文
posted @ 2018-10-26 17:27 落笔映惆怅丶 阅读(222) 评论(0) 推荐(0)
摘要:传送门 思路: 二分跳跃的最短距离 mid 。暴力判断如果有两个石头直接的距离小于 mid ,就把这个石头拿走。如果拿走的石头数目 cnt ≤ m,说明二分的答案可行,ans = mid,接着二分更短的跳跃距离。 Code: 阅读全文
posted @ 2018-10-26 15:21 落笔映惆怅丶 阅读(240) 评论(0) 推荐(0)
摘要:传送门 思路: 看到村庄的数目 ≤ 200,很显然可以用 floyd 来做。 但如果对于每次询问时间 t 都暴力地跑一遍 floyd ,时间复杂度为 n4 ,只能拿到 50 分。 所以,要考虑一下如何优化 。。。 因为每个村庄的 t [ i ],及询问 ( x , y , t ) 中的 t 都是不下 阅读全文
posted @ 2018-10-25 15:31 落笔映惆怅丶 阅读(217) 评论(0) 推荐(0)
摘要:传送门 思路: ① 可以把每个学生都看作点,而那些实力相同的学生就处在同一个连通块内,因为连通块内的同学要么都取,要么不取,所以可以将连通块缩成一个点。只需用并查集维护每个连通块的大小。 ② 接着采取神奇的可行性DP:用 f[ i ] 判断选出 i 个学生的方案是否可行。可行就转移 。 伪代码: 初 阅读全文
posted @ 2018-10-24 21:48 落笔映惆怅丶 阅读(155) 评论(0) 推荐(0)
摘要:传送门 思路: 任意找一个点为树根。DFS 遍历树,如果子树和为负就直接跳过,不然就统计进答案。( 虽是任意取一点为根,但不一定从这个点出发能够取得最优解,要开一个 ans 记录一下最大值。) 标程: 阅读全文
posted @ 2018-10-23 20:52 落笔映惆怅丶 阅读(120) 评论(0) 推荐(0)
摘要:传送门 思路: 二分答案 ans ,将所有边都减去 ans ,判断负环。 Code: 阅读全文
posted @ 2018-10-23 16:51 落笔映惆怅丶 阅读(120) 评论(0) 推荐(0)
摘要:传送门 思路: 设 f [ i ][ j ] 表示,扔进去 i 个垃圾,垃圾高度为 j 时,奶牛的生命值。 初始化 f 数组为 -1,因为当奶牛生命值为 0 时,奶牛还是可以操纵垃圾。f [ 0 ][ 0 ] = 10 为奶牛的初始生命值。 转移如下: ① 当 f [ i ][ j ] < 0 时, 阅读全文
posted @ 2018-10-22 17:18 落笔映惆怅丶 阅读(204) 评论(0) 推荐(0)
摘要:传送门 思路: 采取贪心的思想。 把每个岛屿看作圆心,以雷达的范围 d 为半径,求出与 x 轴的左右两个交点,两交点所夹的区间就需要放置一个雷达,这样就把这道题转换为了区间取点问题。在枚举岛屿时,记录之前最后一个雷达安放的位置 las ,如果岛屿在这个雷达的范围内,就跳过,否则,在该岛屿所在的区间右 阅读全文
posted @ 2018-10-22 11:30 落笔映惆怅丶 阅读(246) 评论(0) 推荐(0)
摘要:传送门 思路: 直接用拓扑排序,套用题目给的公式就行了。。 标程: 阅读全文
posted @ 2018-10-19 22:19 落笔映惆怅丶 阅读(161) 评论(0) 推荐(0)
摘要:传送门 思路: 还是比较水的(不看题解不看书),用 vis 存字典树上的每个点是多少个单词的前缀,bo 来存每个点是多少个单词的结尾(坑点:会有很多相同的单词,不能只有 bool 来存)。统计时:① 如果匹配串的长度小于单词的长度,ans+= vis;② 如果匹配串的长度≥单词长度,ans+=bo; 阅读全文
posted @ 2018-10-19 11:22 落笔映惆怅丶 阅读(177) 评论(0) 推荐(0)
摘要:传送门 思路: 毒瘤的字典树! ▲主要分有两个步骤: ① 日常的建树。 ② 暴力地求解。 ▲日常建树:过于基础,跳过。 ▲重点在于如何暴力地求解而不被卡掉(DP?不存在的) 可以利用区间动规的思想,枚举文章的左右端点,判断中间区间的文章是否可以被理解。 文章的长度几乎为 INF ,直接 N2 枚举 阅读全文
posted @ 2018-10-18 22:02 落笔映惆怅丶 阅读(146) 评论(0) 推荐(0)
摘要:传送门 这题似乎不应该出现在这里。。 日常做法(归并): 权值线段树做法: 需要先预处理,得到每个值在权值线段树中的位置;再按顺序将数字 a[ i ] 插入到树中相应的位置 ,接着询问树中比它大的元素个数,容易知道这些数都与当前的数 a[ i ] 形成逆序对,直接累加进 ans。 阅读全文
posted @ 2018-10-17 22:13 落笔映惆怅丶 阅读(222) 评论(0) 推荐(0)
摘要:传送门 思路: 对于第一问很容易看出是求最长下降子序列,N2 的暴力就可解决。而第二问是求最优方案数(且不重复),需要判重。可以在求解最长下降子序列的基础上增开一个数组 g ,g[ i ] 表示以 i 结尾,不同的最优方案数。 标程: 阅读全文
posted @ 2018-10-17 21:47 落笔映惆怅丶 阅读(123) 评论(0) 推荐(0)
摘要:传送门 思路: 可以用 01 背包做,但是如果直接套用 01背包 模板就 GG 了。因为随着时间的推移,每个物品的价值在不断的发生改变。 现在考虑相邻的两个物品x,y。假设现在已经耗费 p 的时间,那么分别列出先做 x,y 的代价: ① a[ x ] - ( p + c[ x ] ) * b[ x 阅读全文
posted @ 2018-10-16 19:31 落笔映惆怅丶 阅读(251) 评论(0) 推荐(0)
摘要:传送门 思路: 动态规划:设 f [ i ] 表示第 i 个任务开始时,可获得的最大空闲时间。 转移方程: ① 若此时无任务:f [ i ] = max( f [ i ] , f [ i-1 ]+1 )。 ② 若此时有任务:f [ i+wj-1 ] = max( f [ i+wj-1 ] , f [ 阅读全文
posted @ 2018-10-15 12:04 落笔映惆怅丶 阅读(172) 评论(0) 推荐(0)
摘要:传送门 思路: 题目要求每次连边都要输出最小生成树的边权和。如果在线直接套用最小生成树模板肯定会超时,考虑离线处理。记录每一插入边的时间,在所有边都插入完成后排序一遍就可以求最小生成树(按照插入时间的前后对边进行取舍)。 标程: 阅读全文
posted @ 2018-10-12 11:48 落笔映惆怅丶 阅读(324) 评论(0) 推荐(0)
摘要:传送门 思路: 普通的树型动规,可参考 P2016 战略游戏 。 标程: 阅读全文
posted @ 2018-10-11 22:00 落笔映惆怅丶 阅读(149) 评论(0) 推荐(0)
摘要:传送门 思路: 前置知识——普通树D: ▲普通的树形 DP : 设 f [ i ][ 0 ] 表示这个点不取,则它的所有子节点都要取;f [ i ][ 1 ] 表示这个点取,则它的子节点取与不取对之前的答案没有影响,只要取两个中最优的情况。 ▲转移方程式: ▲操作实现: 常采用叶→根的转移形式,根据 阅读全文
posted @ 2018-10-11 18:32 落笔映惆怅丶 阅读(183) 评论(0) 推荐(0)
摘要:传送门 思路: 前置知识——树的直径: ▲定义:找到两个点,使得它们的距离最远,它们的路径就是树的直径。 ▲求解: 此类问题,需要求出以每个节点为根的子树中的最长链,取其中的最大值即为该树的最长链。 对于每个节点,都要记录两个值: d1 [ i ] 表示以 i 为根的子树中,i 到叶子节点的距离最大 阅读全文
posted @ 2018-10-10 22:28 落笔映惆怅丶 阅读(316) 评论(0) 推荐(0)
摘要:【题目描述】 一天,小学生 cyx 向你请教了一道他不会做的小学数学题,你瞄了一眼题目,发现题目长下面这样。 czk 老板开了个饮料连锁店,连锁店共有 n 家,出售的饮料种类相同。 为了促销,czk 决定让每家连锁店开展赠送活动。具体来说,在第 i 家店,顾客可以用 ai 个饮料瓶兑换到 bi 瓶饮 阅读全文
posted @ 2018-10-08 17:05 落笔映惆怅丶
摘要:关于LCA: LCA 指树上两点的公共祖先。 如何 “暴力” 找两点的 LCA : 可以先 DFS 一遍求出每个点的 dep (深度)。然后从深度大的点先往上跳,跳到与另一个点相同的深度,如果还没有到达相同的,就两个点一起往上跳,直到达到相同的点,那么,这个点就是两点的 LCA 。 关于倍增法求 L 阅读全文
posted @ 2018-10-05 22:55 落笔映惆怅丶 阅读(1097) 评论(0) 推荐(0)
摘要:【题目描述】 给定正整数 n , p 和非负整数 a , b ,求 an+an-1b+an-2b2+…+a2bn-2+abn-1+bn,例如当n=1时,该结果等于 a+b 。由于答案可能很大,请对 p 取模。 【输入格式】 ▲多组数据 第一行,一个正整数T,表示数据组数。 接下来 T 行,每行四个整 阅读全文
posted @ 2018-10-03 12:55 落笔映惆怅丶 阅读(243) 评论(0) 推荐(0)
摘要:题目: 【题目描述】 跳跳虎在外面出去玩忘了时间,现在他需要在最短的时间内赶回家。 跳跳虎所在的世界可以抽象成一个含有 n 个点的图(点编号从 1 到 n ),跳跳虎现在在 1 号点,跳跳虎的家在 n 号点。 图上一共有 m 条单向边,通过每条边有固定的时间花费。 同时,还存在若干个单向传送通道,传 阅读全文
posted @ 2018-10-02 18:24 落笔映惆怅丶 阅读(233) 评论(0) 推荐(0)