摘要:
题目大意:给定一个数轴和 N 个点,点有点权,现从 0 位置出发,初始时每次只能走 d 的距离,可以在数轴上任意位置停下,此时,会得到一个点权和。现允许支付 x 的费用,使得每次可以走的距离为一个范围 [max(1,d x), d+x]。求最少支付多少费用才能使得经过的点权和至少为 k。 题解:根据 阅读全文
摘要:
题目大意:给定一棵 N 个点的树,边有边权,定义“线树”为一个图,其中图的顶点是原树中的边,原树中两条有公共端点的边对应在线图中存在一条边,边权为树中两条边的边权和,求线图的最小生成树的代价是多少。 题解: 对于树中的一个顶点来说,假设有 M 条边以该顶点为一个端点,那么这 M 条边对应到线图中的顶 阅读全文
摘要:
题目大意:NOIP2018d1t1 支持 M 次区间查询答案和区间修改操作。 题解: 首先考虑不带区间修改的情况。从左到右进行考虑,发现对于第 i 个数来说,对答案的贡献仅仅取决于第 i 1 个数的大小:若 $a_i \le a_{i 1}$,则第 i 个数对答案的贡献为 0,否则对答案的贡献为两者 阅读全文
摘要:
题目大意:给定一棵 N 个点的树,初始全是白点。要求你做 N 步操作,每一次选定一个与一个黑点相隔一条边的白点,将它染成黑点,然后获得该白点被染色前所在的白色联通块大小的权值。第一次操作可以任意选点,求可获得的最大权值。 题解:对于答案仅由起始点决定的 dp 采用换根法。 发现对于两个相邻的染了黑色 阅读全文
摘要:
题目大意:给定一个长度为 N 的数组,以及 M 个区间,给出的区间有两个性质,性质一是给定区间中的元素单调不减,性质二是给定区间中的元素存在相邻单调减的元素对,求构造一个符合给定区间条件的序列,若不存在,则输出 NO。 题解:没有从差分的角度进行考虑,WA 到吐血。。。 区间增减性的问题应该从差分角 阅读全文
摘要:
题目大意:求二维最长上升子序列的长度。 题解: 可以看出,这个问题等价于三维偏序问题。 不过在进行分治的时候要注意,由于 dp 转移是有顺序的,因此只能先处理左半部分,再处理左半部分对右边的贡献,最后处理右半部分。 代码如下 cpp include using namespace std; cons 阅读全文
摘要:
题目大意:给定一个 N\ N 的矩形,有 Q 次操作,每个操作可以是矩形单点修改或查询子矩形的权值和。 题解:CDQ分治适合处理修改操作之间互不影响且支持离线的题目。 满足以上操作条件的显然可以树套树来做,不过代码量起飞,我也写不出来 qaq。。 学到了利用 cdq 分治来解决这种问题。发现操作之间 阅读全文
摘要:
题目大意:一个人在时间 [1,N] 内工作,现有 M 个任务,每个任务需要在一段固定的时间区间内完成,任务之间的时间可能有重叠。若当前时间有任务要开始,且人处于空闲状态,则一定要这个人来做,否则这个人忽略这个任务。求用以上原则进行工作的最长休息时间是多少。 题解: 若用 f[i] 表示前 i 分钟的 阅读全文
摘要:
题目大意:给定一个序列,初始为空。现在我们将 1 到 N 的数字插入到序列中,每次将一个数字插入到一个特定的位置。每插入一个数字,我们都想知道此时最长上升子序列长度是多少? 题解:学会了 rope 操作。 由于是从小到大插入元素,发现当前插入 i 时,对前 i 1 个元素的答案没有影响,即:后续插入 阅读全文
摘要:
题目大意:给定 N 个数,M 个询问,每次询问如果去掉三个数(可能相同),能否选择恰好 10 个数字,凑出 87 这个数。 题解:骚操作。。 集合凑数问题是一个很经典的模型,即:背包问题。 先进行预处理,每次枚举三个位置,跑一遍背包,计算出删除这三个位置的数是否可以组合出 87 这个数字。查询的时候 阅读全文