题意 "题目链接" Sol 主人公的最优决策一定是经过熊 返回到某个位置 收集经过的钻石 那么可以直接设$f[i]$表示收集完了前$i$个位置的钻石的最小时间,转移的时候枚举下最后收集的位置 $$f[i] =min(f[j], p[i] p[j + 1] + max(T, 2 (p[i] p[j + ...
分类:
其他好文 时间:
2019-01-27 19:13:03
阅读次数:
178
时间复杂度O(logn) P1843 奶牛晒衣服 P2678 跳石头 P1577 切绳子 当函数具有单调性时 在范围内 二分答案的一边可以而另一边不可以 通过二分把范围逐渐缩小 1.当了l<=r时,边界缩为mid-1与mid+1 2.当了l<=r时,边界缩为mid-1与mid+1 不确定是mid,m ...
分类:
其他好文 时间:
2019-01-21 20:09:19
阅读次数:
168
题意 给定一个序列 $\{a_1, a_2, \cdots, a_n\}$,要把它分成恰好 $k$ 个连续子序列。 每个连续子序列的费用是其中相同元素的对数,求所有划分中的费用之和的最小值。 $2 \le n \le 10^5, 2 \le k \le \min(n, 20), 1 \le a_i ...
分类:
其他好文 时间:
2019-01-16 20:38:00
阅读次数:
241
Description 给定一个序列,要把它分成k个子序列。每个子序列的费用是其中相同元素的对数。求所有子序列的费用之和的最小值。 Solution 仍然是决策单调性的题目。 $f[i][j]$表示把前$i$个数分成$j$份的最小费用。 $$ f[i][j]=min(f[k][j 1]+w(k+1, ...
分类:
其他好文 时间:
2019-01-09 00:37:05
阅读次数:
242
动态规划! 双倍经验(1) 双倍经验(2) 这题是决策单调性$dp$,我们把式子变形一下: $$p_i=\max\limits^{n}_{j=1}\{val_j+\sqrt{|i-j|}\}-a_i$$ 看这绝对值很不爽,我们可以正着扫一遍,再把序列翻转扫一遍,就解决了绝对值问题了 我们只讨论前一部 ...
分类:
其他好文 时间:
2019-01-05 11:12:35
阅读次数:
221
显然的斜率优化模型 但是单调队列维护斜率单调性的时候出现了莫名的锅orz 代码 cpp include include include include define int long long using namespace std; int a[500100],dp[500100],n,m,sum ...
分类:
其他好文 时间:
2018-12-30 20:27:08
阅读次数:
148
跟着书上的思路学习dp的单调性优化觉得还是很容易想的。 数据范围: dp,数据范围是百万,这应该是O(n)的算法了。 首先不难想到设f[i]表示到第i个百米所能达到的最大能量,那么f[n]即为所求。 f[i]=max(f[i],f[j]+s[i]-s[j]-cost[i]);这个地方s数组是能量的前 ...
分类:
其他好文 时间:
2018-12-30 20:21:29
阅读次数:
153
建议不了解STL的读者先了解几个基本的队列的STL.这也是单调队列和单调栈一般都会用到的. 单调队列:建立一个队列,使队列一直具有单调性(满足单调递增或者单调递减),时间复杂度O(N). 那么我们应该如何做到"使队列一直具有单调性"呢? 以单调递增为例,我们O(N)扫描整个序列,每扫描到一个元素: ...
分类:
其他好文 时间:
2018-12-22 18:34:17
阅读次数:
450
将y+q/x+p的值设为x 由于i,j互不干扰,所以我们可以将x,y p,q拉出来分别计算 问题转化为存在x,y,满足y-mid*x+q-mid*p>=0的情况下mid最大 不难发现答案具有单调性,于是二分答案 显然要取出一对(x,y)或(p,q)使y(q)-x(p)*mid尽可能大 以x,y举例, ...
分类:
其他好文 时间:
2018-12-21 19:42:13
阅读次数:
129
"嘟嘟嘟" 只要会决策单调性,这题就是练手的 首先按矩形长排序,这样只用考虑宽了。 然后很容易搞出dp方程 $$dp[i] = min _ {j = 0} ^ {i 1} (dp[j] + x[i] max_{k = j + 1} ^ {i} y[k])$$ 找max可以用st表达到$O(1)$。 ...
分类:
其他好文 时间:
2018-12-15 13:50:57
阅读次数:
148