随笔分类 -  题解

摘要:斜率优化训练记录 前言 斜率优化一般用于优化dp的转移,借着训练斜率优化的相关问题来提升一些DP思维。选择老学长留下的专题场来练手,由于该场题数较多,以及个人不太愿意长时间进行单一专题训练,因此开此文来记录断续的训练结果和心得。 记录 0x01 由一道简单入门题 "玩具装箱" 开头,题意和思路比较简 阅读全文
posted @ 2019-05-11 19:00 __orange 阅读(443) 评论(0) 推荐(0)
摘要:前言 感觉可以用单调队列优化dp的模型还是挺活的,开个随笔记录一些遇到的比较有代表性的模型,断续更新。主要做一个收集整理总结工作。 记录 0x01 "POJ 1821 Fence" ,比较适合入门的题,写出转移方程后可以比较容易的看出决策变量的取值范围的界是单调变化的,以及价值拆开之后也是单调的 C 阅读全文
posted @ 2019-04-19 20:22 __orange 阅读(381) 评论(0) 推荐(0)
摘要:题意 有一棵树,q个询问,每次询问,指定一个点做树根,再给定k个点,要求把这些点分成不超过m组的方案数,分配的限制是任意两个有祖先关系的点不能分在同一组。题目还保证了所有的询问的k加起来不超过1e5。 思路 如果直接在原树上DP计数,那么q次询问下的DP总复杂度是平方级别的,显然不对。 由于询问点数 阅读全文
posted @ 2019-03-16 17:21 __orange 阅读(362) 评论(0) 推荐(0)
摘要:简介 对于一颗静态树,O(nlogn)时间内处理子树的统计问题。是一种优雅的暴力。 算法思想 很显然,朴素做法下,对于每颗子树对其进行统计的时间复杂度是平方级别的。考虑对树进行一个重链剖分。虽然都基于重链剖分,但不同于树剖,我们维护的不是树链。 对于每个节点,我们先处理其轻儿子所在子树,轻子树在处理 阅读全文
posted @ 2019-03-03 05:30 __orange 阅读(425) 评论(0) 推荐(0)
摘要:"E. Lunar New Year and Red Envelopes" 题意: 在长度为n的时间轴上,有k个红包,每个红包有领取时间段[s,t],价值w,以及领了个这个红包之后,在时间d到来之前无法再进行领取操作。每次领取的策略是取当前可领取红包中w最大的,w相同时取d最大的。再给m个干扰机会, 阅读全文
posted @ 2019-02-02 00:56 __orange 阅读(156) 评论(0) 推荐(0)
摘要:"E. Selling Souvenirs" 题意: n件物品,有重量和价值,重量只有三种1,2,3。问取不超过m重量的物品的价值总和最大是多少。(n define dd(x) cout P; typedef priority_queue BQ; typedef priority_queue,gre 阅读全文
posted @ 2019-01-27 23:12 __orange 阅读(222) 评论(0) 推荐(0)
摘要:"F. Imbalance Value of a Tree" 题意: 给一颗带点权的树,求所有简单路径上最大点权和最小点权之差的总和。 思路: 所求问题可以看作求各路径上的最大值之和减各路径上的最小值之和。因此考虑每个点权的贡献次数,也就是他们成为最值的次数。 以求最大值之和为例分析问题,我们可以从 阅读全文
posted @ 2019-01-26 03:33 __orange 阅读(186) 评论(0) 推荐(0)
摘要:"E. Physical Education Lessons" 题目:一段长度为n的区间初始全为1,每次成段赋值0或1,求每次操作后的区间总和。(n define dd(x) cout P; typedef priority_queue BQ; typedef priority_queue,grea 阅读全文
posted @ 2019-01-25 01:53 __orange 阅读(203) 评论(0) 推荐(0)
摘要:"F. Dominant Indices" 题意: 给一颗无向树,根为1。对于每个节点,求其子树中,哪个距离下的节点数量最多。数量相同时,取较小的那个距离。 题目: 这类题一般的做法是树上的启发式合并,复杂度是O(nlogn)。但由于这题所求的信息与深度有关,因此可以使用长链剖分的技巧,复杂度可以是 阅读全文
posted @ 2019-01-24 18:22 __orange 阅读(205) 评论(0) 推荐(0)
摘要:"1009 E. Intercity Travelling" 题意:一段路n个点,走i千米有对应的a[i]疲劳值。但是可以选择在除终点外的其余n 1个点休息,则下一个点开始,疲劳值从a[1]开始累加。休息与不休息等概率,设疲劳值总和的期望为p,求p 2n 1 思路:由于期望乘上了2n 1,所以数学意 阅读全文
posted @ 2019-01-21 16:50 __orange 阅读(191) 评论(0) 推荐(0)
摘要:最远 Manhattan 距离 处理问题 K维空间下的n个点,求两点最远曼哈顿距离 思路 以二维为例介绍算法思想,即可类推到k维。对于P,Q两点,曼哈顿距离|Px Qx|+|Py Qy|可看作(±Px±Py) (±Qx±Qy),不难发现Px应该与Qx的符号相同,Py与Qy符号相同,因此共四种情况。这 阅读全文
posted @ 2018-12-27 04:37 __orange 阅读(1448) 评论(0) 推荐(0)
摘要:"Codeforces 869E. The Untended Antiquity" 题意: 在一张mxn的格子纸上,进行q次操作: 1,指定一个矩形将它用栅栏围起来。 2,撤掉一个已有的栅栏。 3,询问指定两点之间是否连通(即能否从其中一点不翻越栅栏走到另一点) 思路: 对于操作1,将给定的矩形哈希 阅读全文
posted @ 2018-11-20 22:48 __orange 阅读(270) 评论(0) 推荐(0)
摘要:"Codeforces 955C Sad powers" 题意 q组询问,每次询问给定L,R,求[L,R]区间内有多少个数可以写成ap的形式,其中a 0,p 1,1 ≤ L ≤ R ≤ 1e18。 思路 对于p 2的情况,由于随着指数p的增大,小于1e18的p次幂的数量会急剧减小,总数量的级别在1e 阅读全文
posted @ 2018-11-17 18:37 __orange 阅读(166) 评论(0) 推荐(0)
摘要:"Educational Codeforces Round 53 E. Segment Sum" 题意: 问[L,R]区间内有多少个数满足:其由不超过k种数字构成。 思路: 数位DP裸题,也比较好想。由于没考虑到前导0,卡了很久。但最惨的是,由于每次求和的时候需要用到10的pos次幂,我是用提前算好 阅读全文
posted @ 2018-10-27 15:37 __orange 阅读(184) 评论(0) 推荐(0)
摘要:"Codeforces 959D. Mahmoud and Ehab and another array construction task" 题意 构造一个任意两个数都互质的序列,使其字典序大等于a序列且最小。 思路 其实这题乱搞就行了。用到了之前HDdalao教我的 "素因子分解" 方法,可以快 阅读全文
posted @ 2018-10-26 17:17 __orange 阅读(154) 评论(0) 推荐(0)
摘要:"Codeforces 55D. Beautiful numbers" 题意 求[L,R]区间内有多少个数满足:该数能被其每一位数字都整除(如12,24,15等)。 思路 一开始以为是数位DP的水题,觉得只需要记录搜到当前位出现了哪些数字作为状态即可,明显是假算法...感觉这是一道数位DP好题。可以 阅读全文
posted @ 2018-10-25 02:24 __orange 阅读(159) 评论(0) 推荐(0)
摘要:"Codeforces 678E. Another Sith Tournament" 题意: n(n 思路: 首先要观察到这一性质:一号玩家要想取得最终胜利的概率尽可能大,一定要把他安排在最后上场,只打一次。获胜概率与当前擂主以及台下的人有关,所以这个是状态,容易想到需要用二进制表示来压缩状态。 然 阅读全文
posted @ 2018-10-24 16:32 __orange 阅读(187) 评论(0) 推荐(0)
摘要:"Codeforces 126B. Password" 题意:一个字符串,找出最长的子串t,它既是前缀又是后缀,还出现在中间。输出t,不存在则输出Just a legend。 思路:利用KMP算法处理出next数组,由next数组的意义可以知道i为尾的最长相同前缀后缀。则ne[n 1],ne[ne[ 阅读全文
posted @ 2018-10-20 12:34 __orange 阅读(344) 评论(0) 推荐(1)
摘要:"Codeforces 645E. Intellectual Inquiry" 题意:给定一串字符,由前k个小写拉丁字母组成,要求在该字符串后面补上n个字符(也从前k个小写拉丁字母里面选),使得最后得到的字符串含有本质不同的子序列的数量最大。 思路:要解决这个问题,首先要解决如何求字符串本质不同的子 阅读全文
posted @ 2018-10-12 20:40 __orange 阅读(173) 评论(0) 推荐(0)
摘要:"Codeforces 601B. Lipshitz Sequence" 题意: ,q个询问,每次询问给出l,r,求a数组[l,r]中所有子区间的L值的和。 思路:首先要观察到,斜率最大值只会出现在相邻两点上,因此可以处理出d数组,d[i]=a[i] a[i 1]。则问题转化为求d数组在指定区间内, 阅读全文
posted @ 2018-10-12 01:49 __orange 阅读(240) 评论(0) 推荐(0)