http://acm.hdu.edu.cn/showproblem.php?pid=6619

#include<bits/stdc++.h>
#define fi first
#define se second
#define INF 0x3f3f3f3f
#define LNF 0x3f3f3f3f3f3f3f3f
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define pqueue priority_queue
#define NEW(a,b) memset(a,b,sizeof(a))
const double pi=4.0*atan(1.0);
const double e=exp(1.0);
const int maxn=1e4+;
typedef long long LL;
typedef unsigned long long ULL;
const LL mod=1e9+;
const ULL base=1e7+;
const int maxp=+;
using namespace std;
LL a[maxn],f[maxn];
LL g[maxn],gg[maxn];
LL dp[maxn][];
LL q[][maxn];
LL l[],r[];
LL gdp(int i,int j,int k) {return dp[j][k]-gg[j]-g[j]*(i-j)+gg[i];}
LL gfz(int j,int h,int k) {return dp[j][k]-gg[j]+g[j]*(j)-(dp[h][k]-gg[h]+g[h]*(h));}
LL gfm(int j,int h) {return g[j]-g[h];}
int main(){
int t;
scanf("%d",&t);
int n,m,k;
while(t--){
scanf("%d%d%d",&n,&k,&m);
for(int i=;i<=n;i++){
scanf("%lld",&a[i]);
g[i]=g[i-]+a[i];
gg[i]=g[i]+gg[i-];
}
for(int i=;i<=k;i++){
l[i]=r[i]=;
q[i][l[i]]=;
}
for(int i=;i<=n;i++){
for(int j=;j<=i&&j<=k+;j++){
while(l[j-]<r[j-]&&gfz(q[j-][l[j-]+],q[j-][l[j-]],j-)<=i*gfm(q[j-][l[j-]+],q[j-][l[j-]])) l[j-]++;
dp[i][j]=gdp(i,q[j-][l[j-]],j-);
while(l[j]<r[j]&&gfz(i,q[j][r[j]],j)*gfm(q[j][r[j]],q[j][r[j]-])<=gfm(i,q[j][r[j]])*gfz(q[j][r[j]],q[j][r[j]-],j)) r[j]--;
q[j][++r[j]]=i;
}
}
for(int i=;i<=n;i++){
f[i]=a[i]*(n-i+);
}
sort(f+,f++n);
LL ans=;
for(int i=n;i>=n-m+;i--){
ans+=f[i];
}
ans-=dp[n][k+];
printf("%lld\n",ans);
}
}

HDU 6619 Horse 斜率优化dp的更多相关文章

  1. hdu 2829 Lawrence(斜率优化DP)

    题目链接:hdu 2829 Lawrence 题意: 在一条直线型的铁路上,每个站点有各自的权重num[i],每一段铁路(边)的权重(题目上说是战略价值什么的好像)是能经过这条边的所有站点的乘积之和. ...

  2. HDU 2829 Lawrence (斜率优化DP或四边形不等式优化DP)

    题意:给定 n 个数,要你将其分成m + 1组,要求每组数必须是连续的而且要求得到的价值最小.一组数的价值定义为该组内任意两个数乘积之和,如果某组中仅有一个数,那么该组数的价值为0. 析:DP状态方程 ...

  3. hdu 3480 Division(斜率优化DP)

    题目链接:hdu 3480 Division 题意: 给你一个有n个数的集合S,现在让你选出m个子集合,使这m个子集合并起来为S,并且每个集合的(max-min)2 之和要最小. 题解: 运用贪心的思 ...

  4. Print Article hdu 3507 一道斜率优化DP 表示是基础题,但对我来说很难

    Print Article Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)To ...

  5. HDU 2993 MAX Average Problem(斜率优化DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2993 题目大意:给定一个长度为n(最长为10^5)的正整数序列,求出连续的最短为k的子序列平均值的最大 ...

  6. HDU 3507 Print Article(斜率优化DP)

    题目链接 题意 : 一篇文章有n个单词,如果每行打印k个单词,那这行的花费是,问你怎么安排能够得到最小花费,输出最小花费. 思路 : 一开始想的简单了以为是背包,后来才知道是斜率优化DP,然后看了网上 ...

  7. HDU 3045 Picnic Cows(斜率优化DP)

    Picnic Cows Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  8. 斜率优化DP学习笔记

    先摆上学习的文章: orzzz:斜率优化dp学习 Accept:斜率优化DP 感谢dalao们的讲解,还是十分清晰的 斜率优化$DP$的本质是,通过转移的一些性质,避免枚举地得到最优转移 经典题:HD ...

  9. 【转】斜率优化DP和四边形不等式优化DP整理

    (自己的理解:首先考虑单调队列,不行时考虑斜率,再不行就考虑不等式什么的东西) 当dp的状态转移方程dp[i]的状态i需要从前面(0~i-1)个状态找出最优子决策做转移时 我们常常需要双重循环 (一重 ...

随机推荐

  1. Linux软件安装管理---源码安装

    在Linux平台下,软件包的类型可以划分为两类:源码包.二进制包. 源码包: 即程序软件的源代码(一般也叫Tarball,即将软件的源码以tar打包后再压缩的资源包). 二进制包: 如 Red Hat ...

  2. 【转载】熟练利用google hacking来辅助我们快速渗透

    转载于:https://klionsec.github.io/2014/12/14/search-hacking/?tdsourcetag=s_pcqq_aiomsg 0x01 google hack ...

  3. .NET细节知识总结,不断更新

    1.catch (Exception)和catch (Exception e) Exception 类包含许多子类 程序执行的时候要将每一个类都搜索一遍 以找到符合的异常类 这样是蛮消耗资源的 影响效 ...

  4. Jmeter 跨线程组传递参数 之两种方法(转)

    终于搞定了Jmeter跨线程组之间传递参数,这样就不用每次发送请求B之前,都需要同时发送一下登录接口(因为同一个线程组下的请求是同时发送的),只需要发送一次登录请求,请求B直接用登录请求的参数即可,直 ...

  5. destoon 增删改查

    switch($action) { case 'add': //添加页面 if($submit) { // 不允许重名,直接添加时 $old = $db->get_one("SELEC ...

  6. WUSTOJ 1274: 喂,这里是帅帅的LCM(Java)

    1274: 喂,这里是帅帅的LCM 题目   在一组数中,找出个数为奇数的数.更多内容点击标题. 分析   其实这种题并不难,做过一次之后,绝对不会错第二次.通过读题可以发现,我们要找的那个数在这一堆 ...

  7. MySQL explain功能展示的各种信息的解释

    1.id: MySQL Query Optimizer 选定的执行计划中查询的序列号. 2.select_type: 所使用的查询类型,主要有以下这几种查询类型.  DEPENDENT SUBQUER ...

  8. 通过getAdaptiveExtension生成的动态类

    通过getAdaptiveExtension生成的动态类 方便调式使用 请放在根目录下

  9. Mybatis-Plus myBatis的增强工具

    1. Mybatis-Plus简介 1.1. 什么是Mybatis-Plus MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为 ...

  10. 2019杭电多校一 A. Blank (dp)

    大意: 长为$n$的数组, 每个位置范围$[0,3]$, $m$个限制$(l,r,x)$表示$[l,r]$内有$x$种数, 求方案数. 维护每个数字最后一次出现位置, 暴力$DP$ 实现时有个技巧是把 ...