``` //k可能是负数,所以斜率不在有单调性 //新加的点的横坐标还是单调递增的,但可能不是严格的 //在查询的时候:只能二分查找 //在插入的时候:将队尾不在凸包上的点删掉 //f[j]=(sumt[i]+s)*sumc[j]+f[i]-sumt[i]*sumc[i]-s*sumc[n] //f... ...
分类:
其他好文 时间:
2020-05-18 12:17:43
阅读次数:
46
参考博客https://blog.csdn.net/qq_26572969/article/details/47155559 ...
分类:
其他好文 时间:
2020-03-18 18:37:27
阅读次数:
57
``` //将含有N个元素的一个集合分成M个子集,使得每个子集的最大值与最小值平方差的和最小。 #include #include #include #include using namespace std; typedef long long ll; const int maxn = 1e4+50... ...
分类:
其他好文 时间:
2020-03-18 18:27:15
阅读次数:
60
```#include#include#include#includeusing namespace std;const int MAX = 1000+10;//dp[i][j]:把前 i 个数分成 j 段后能得到的序列的最小权值和//dp[i][j] = min( dp[k][j-1] + cos... ...
分类:
其他好文 时间:
2020-03-17 21:10:27
阅读次数:
49
这是我斜率DP第一个没有一遍AC的,原因是第一遍忘开long long了。 这一题比较特殊,细心的同学一定发现了,递推式不带f。 为了方便,设d数组的后缀和为sd[i]=sd[i+1]+d[i],设k数组的前缀和为sk[i]=sk[i-1]+k[i](k[i]即是题目中的w[i]) 设f[i]为第二 ...
分类:
其他好文 时间:
2020-03-01 00:26:54
阅读次数:
69
前言 首先此篇文章是为低年级的朋友准备的, 不涉及什么深奥的知识 ,~~比如线性规划之类的~~。 仔细看 ,不要以为自己学不会,看不懂,只要你会DP并打过一些题目而且会单调队列优化DP,斜率DP离你就不远了~~~。这篇文章也是在我领悟了斜率DP不久写的,如果本文有什么不严谨的地方,欢迎指出!!! 在 ...
分类:
其他好文 时间:
2020-02-14 11:09:03
阅读次数:
88
本题我们首先很容易可以列出朴素的状态和转移方程 f[i][j],代表前i个分j次购买的最小值 那么显然,这个值可以根据j-1次的所有结果更新而来,但这样的算法是n^2的,不过这题数据范围好像不太大 因为我是专题训练,所以我直接用上了斜率优化的方法 因为题目的转移方程是 f[i][x]=min(f[j ...
分类:
其他好文 时间:
2020-02-13 16:51:34
阅读次数:
58
题目链接:https://codeforces.com/problemset/problem/1083/E 本来是想写计几的,结果发现是到斜率优化dp,正好也没怎么做过斜率dp,整理一下板子。 感觉斜率优化dp就和凸包差不多,维护一个上(下)凸包的亚子。 1 // f[j] = yi * xj + ...
分类:
其他好文 时间:
2020-01-29 00:56:10
阅读次数:
86
Description 详见OJ Solution 第一眼看上去好像斜率$DP$,但仔细一看发现不能用单调队列维护。 然后$GG$。 正解使用单调栈来维护。 我们发现,我们维护的单调栈$g[]$的$a[]$是呈单调不下降的。 对于新加入的点i,我们需要将单调栈中$a[]$大于$a[i]$的弹出栈中, ...
分类:
其他好文 时间:
2019-08-17 18:22:06
阅读次数:
108
```cpp include include using namespace std; long long sumt[40005],sum[40005],f[40005],q[40005]; double X(long long x) { return sumt[x]; } double Y(lon ...
分类:
其他好文 时间:
2019-08-11 10:32:19
阅读次数:
87