随笔分类 -  数据结构-堆

摘要:题目链接 "BZOJ2800" 题解 区间加极难操作,差分之后可转化为两点一加一减 那么现在问题就将每个点暂时独立开来 先判定每个点是否被(A,B)整除,否则无解 之后我们先将A,B化为互质,所有数除一个(A,B) 求得 Ax+By=1 那么对于点d[i],满足 $$ 阅读全文
posted @ 2018-06-29 07:43 Mychael 阅读(335) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ2802" 题解 这样的问题通常逆序贪心 每个A[i]只能用来满足后面的B[i] 就用当前A[i]不断提供给最小的B[i]即可 用一个堆维护 阅读全文
posted @ 2018-06-28 09:55 Mychael 阅读(156) 评论(0) 推荐(0) 编辑
摘要:题目链接 "uoj" 题解 以前看别人博客,在考场上用费用流做,一直以为这题是毒瘤网络流题 没想到竟然是贪心模拟题。。。 如果只有一个蔬菜呢?这就是一个经典的普及难度的贪心,正着推面临优先选择的困难,而逆着推由于不存在淘汰,所以可以贪心选最大的 首先si的限制很容易处理,只需将每一个蔬菜分出一 阅读全文
posted @ 2018-06-28 08:16 Mychael 阅读(666) 评论(0) 推荐(0) 编辑
摘要:题目链接 "CF487E" 题解 圆方树 + 树剖 裸题 建好圆方树维护路径上最小值即可 方点的值为其儿子的最小值,这个用堆维护 为什么只维护儿子?因为这样修改点的时候就只需要修改其父亲的堆 这样充分利用了一对一的特性优化了复杂度 如此询问时如果lca为方点,再询问一下lca的父亲即可 复杂 阅读全文
posted @ 2018-06-20 11:43 Mychael 阅读(163) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3832" 题解 神思路orz,根本不会做 设f[i]为到i的最长路,g[i]i出发的最长路,二者可以拓扑序后dp求得 那么一条边(u,v)的对应的最长链就是f[u]+1+g[v] 我们人为加入源汇点STS向每个点连边,每个点 阅读全文
posted @ 2018-05-27 22:14 Mychael 阅读(166) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ1095" 题解 传说中的动态点分治,一直不敢碰 今日一会,感觉其实并不艰涩难懂 考虑没有修改,如果不用树形dp的话,就得点分治 对于每个重心,我们会考虑其分治的子树内所有点到它的距离,然后取所有不同子树中最大的两个相加来更新答案 如果带修改怎么办呢? 考虑一个点u被修改了, 阅读全文
posted @ 2018-05-18 16:13 Mychael 阅读(201) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ5158" 题解 题中所给的最长上升子序列其实就是一个限制条件 我们要构造出最大的以i开头的最长下降子序列,就需要编号大的点的权值尽量小 相同时当然就没有贡献,所以我们不妨令权值为一个1n的排列 考虑如何满足限制条件 对于所有a[i]=v的点,点与点之间一定 阅读全文
posted @ 2018-05-14 11:27 Mychael 阅读(191) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ2535" 题解 航班之间的关系形成了一个拓扑图 而且航班若要合法,应尽量早出发 所以我们逆拓扑序选点,能在后面出发的尽量后面出发,不会使其它点变得更劣,容易知是正确的 第二问只需枚举航班x,拓扑排序时忽视x,最后无法选点时就是x最早的时间 C++ include i 阅读全文
posted @ 2018-05-10 10:24 Mychael 阅读(203) 评论(0) 推荐(0) 编辑
摘要:题目 ftiasch 18岁生日的时候,lqp18_31给她看了一个神奇的序列 A1, A2, ..., AN. 她被允许选择不超过 M 个连续的部分作为自己的生日礼物。 自然地,ftiasch想要知道选择元素之和的最大值。你能帮助她吗? 输入格式 第1行,两个整数 N (1 ≤ N ≤ 105) 阅读全文
posted @ 2018-03-07 13:54 Mychael 阅读(246) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示