随笔分类 -  DP——决策单调性优化(斜率优化、四边形不等式)

摘要:XXX.[CTSC2012]熟悉的文章 题解 阅读全文
posted @ 2021-04-01 11:16 Troverld 阅读(43) 评论(0) 推荐(0)
摘要:CXLVII.[NOI2016] 国王饮水记 首先,我们一定可以舍去那些高度比 \(h_1\) 还小的城市,并且将剩余的高度比 \(h_1\) 大的城市排序,使得 \(h_1\) 到 \(h_n\) 递增。 我们不妨从三座城市想起。假如可以合并两次,应该怎么合并? 先合并 \((1,2)\),再合并 阅读全文
posted @ 2021-03-31 15:29 Troverld 阅读(110) 评论(0) 推荐(1)
摘要:CXL.忘情 wqs二分水题,明显那个式子可以被化成 \((1+\sum x)^2\),于是可以斜率优化,然后又明显随着段数越分越多函数是凹的,于是可以简单wqs二分。时间复杂度 \(O(n\log n)\)。 需要注意的是,因为二分上界是 \(10^{18}\),所以得开 __int128。 代码 阅读全文
posted @ 2021-03-31 15:17 Troverld 阅读(88) 评论(0) 推荐(0)
摘要:CXXXVI.[IOI2000] 邮局 加强版 Observation 1. 若一段村庄中设一个邮局,则邮局一定设在其中位数(若是偶数则任一中位数)的位置。 Observation 2. 若令 \(w(l,r)\) 为区间 \((l,r)\) 中村庄设一个邮局的费用,则其满足四边形不等式。 Obse 阅读全文
posted @ 2021-03-31 15:11 Troverld 阅读(184) 评论(0) 推荐(0)
摘要:CXXXII.[GYM102268J]Jealous Split wqs二分。 首先,先讲一下wqs二分的应用条件: 对于某个函数 \(f(x)\) 和一个特定的 \(x\),要求出 \(f(x)\) 的值的复杂度是不可接受的;但是,若满足 \(f\) 是上凸/下凹的,且对于一个给定的 \(k\), 阅读全文
posted @ 2021-03-31 15:03 Troverld 阅读(245) 评论(0) 推荐(1)
摘要:CXXXI.[GYM102331J]Jiry Matchings 首先,不难想到一个 \(O(n^2)\) 的树上背包:设 \(f_{i,0/1,j}\) 表示在以 \(i\) 为根的子树内,其中 \(i\) 没有被匹配/被匹配了,且整个子树中共匹配了 \(j\) 条边的最优方案。考虑优化。 我们知 阅读全文
posted @ 2021-03-31 15:02 Troverld 阅读(553) 评论(1) 推荐(1)
摘要:CXXX.[GYM102904B]Dispatch Money 考虑设 \(f_i\) 表示长度为 \(i\) 的前缀的最优划分。则我们发现,有 \(f_j+\operatorname{inversion}(j+1,i)\rightarrow f_i\),其中 \(\text{inversion}\ 阅读全文
posted @ 2021-03-31 14:59 Troverld 阅读(274) 评论(0) 推荐(0)
摘要:CXIV.[POI2014]ZAL-Freight 题解 阅读全文
posted @ 2021-03-31 14:31 Troverld 阅读(44) 评论(0) 推荐(0)
摘要:LXXVII.[CmdOI2019]任务分配问题 这道题与LXI.CF868F Yet Another Minimization Problem长得很像。实际算法也类似。 首先,题意就是把所有数划分成$k$段,使得每段内部正序对数量之和最少。设$w(i,j)\(表示区间\)(i,j)$内部正序对数量 阅读全文
posted @ 2021-03-30 19:34 Troverld 阅读(82) 评论(0) 推荐(0)
摘要:LXXVI.高速公路 简直恶心到爆炸…… 首先,暴力的DP是非常简单的。设$dis_x$表示位置$x$到根的距离,则有 \(f_x=\min\limits_{y\text{ is an ancestor of }x}f_y+p_x(dis_x-dis_y)+q_x\) 暴力一敲,期望得分$40%$。 阅读全文
posted @ 2021-03-30 19:33 Troverld 阅读(57) 评论(0) 推荐(0)
摘要:LXI.CF868F Yet Another Minimization Problem 这种题一般来说只有决策单调性一种优化方法。不过,决策单调性可以有很多种应用,例如单调队列或是斜率优化。这题可以选择比较少见的分治优化。 明显,可以设$f[i][j]$表示前$i$个位置分成$j$段的最大收益。显然 阅读全文
posted @ 2021-03-30 16:35 Troverld 阅读(73) 评论(0) 推荐(0)
摘要:XVII.CF311B Cats Transport 推式子时间到~~~ 我们首先对题目中的$d_i$做前缀和,求出每座山距离原点距离; 然后对于第$i$只猫,如果一个饲养员在$t_i-d_$时刻以后出发就可以接到它; 注意,饲养员可以在负时刻就出发!!!我之前想多了以为只能在非负时刻出发而纳闷了好 阅读全文
posted @ 2021-03-30 15:11 Troverld 阅读(57) 评论(0) 推荐(0)
摘要:XVI.[HDU3507]Print Article 没什么好说的,这题比任务安排还水,随便推推完事。 代码: #include<bits/stdc++.h> using namespace std; #define int long long int n,m,s[500100],f[500100] 阅读全文
posted @ 2021-03-30 15:10 Troverld 阅读(57) 评论(0) 推荐(0)
摘要:XIV.[SDOI2013]保护出题人 这题好像不算DP……但是涉及到斜率和凸包的题都是好题 因为这题要求是确保没有任何一个姜丝能活着走到门口, 所以设血量的前缀和为$s$,每两只姜丝间距离为$m$, 则对于 \(\forall i\) , 都应有$ans_i=\max\limits_^{\dfra 阅读全文
posted @ 2021-03-30 15:08 Troverld 阅读(56) 评论(0) 推荐(0)
摘要:XIII.[SDOI2016]征途 这题已经在我的任务列表里吃了大半年的灰了……(去年7月加进来的,到现在已经8个月了) 开始推式子。 我们设第$i$天的路程是$l_i$, 则我们的目的是最小化 \(s^2=\sum\limits_{i=1}^m\dfrac{(\overline{l}-l_i)^2 阅读全文
posted @ 2021-03-30 15:07 Troverld 阅读(75) 评论(0) 推荐(0)
摘要:XII.[SDOI2012]任务安排 同上一题一样,不过,这题的$t_i$可能有负数,这就意味着前缀和不再是单调增的! 我们不能再像前一题一样用单调队列维护了——但是因为队尾的单调性仍然存在,我们仍然可以维护上凸包。这就启发我们使用单调栈来维护斜率,并且在单调栈中二分。 我们不妨想一想,如果这个$c 阅读全文
posted @ 2021-03-30 15:06 Troverld 阅读(59) 评论(0) 推荐(0)
摘要:XII.任务安排 斜率优化真$\color\colorbox$有意思!! 设$t[i]$表示原题中的$t_i$的前缀和,$c[i]$表示原题中$f_i$的前缀和,$m$表示启动时间$s$。 思路1:$n^3$DP: 设$f[i][j]$表示:前$i$个位置,分成$j$组,的最快时间。 则有$f[i] 阅读全文
posted @ 2021-03-30 15:04 Troverld 阅读(65) 评论(0) 推荐(0)