HDU 6619 Horse 斜率优化dp
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的更多相关文章
- hdu 2829 Lawrence(斜率优化DP)
题目链接:hdu 2829 Lawrence 题意: 在一条直线型的铁路上,每个站点有各自的权重num[i],每一段铁路(边)的权重(题目上说是战略价值什么的好像)是能经过这条边的所有站点的乘积之和. ...
- HDU 2829 Lawrence (斜率优化DP或四边形不等式优化DP)
题意:给定 n 个数,要你将其分成m + 1组,要求每组数必须是连续的而且要求得到的价值最小.一组数的价值定义为该组内任意两个数乘积之和,如果某组中仅有一个数,那么该组数的价值为0. 析:DP状态方程 ...
- hdu 3480 Division(斜率优化DP)
题目链接:hdu 3480 Division 题意: 给你一个有n个数的集合S,现在让你选出m个子集合,使这m个子集合并起来为S,并且每个集合的(max-min)2 之和要最小. 题解: 运用贪心的思 ...
- Print Article hdu 3507 一道斜率优化DP 表示是基础题,但对我来说很难
Print Article Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)To ...
- HDU 2993 MAX Average Problem(斜率优化DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2993 题目大意:给定一个长度为n(最长为10^5)的正整数序列,求出连续的最短为k的子序列平均值的最大 ...
- HDU 3507 Print Article(斜率优化DP)
题目链接 题意 : 一篇文章有n个单词,如果每行打印k个单词,那这行的花费是,问你怎么安排能够得到最小花费,输出最小花费. 思路 : 一开始想的简单了以为是背包,后来才知道是斜率优化DP,然后看了网上 ...
- HDU 3045 Picnic Cows(斜率优化DP)
Picnic Cows Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- 斜率优化DP学习笔记
先摆上学习的文章: orzzz:斜率优化dp学习 Accept:斜率优化DP 感谢dalao们的讲解,还是十分清晰的 斜率优化$DP$的本质是,通过转移的一些性质,避免枚举地得到最优转移 经典题:HD ...
- 【转】斜率优化DP和四边形不等式优化DP整理
(自己的理解:首先考虑单调队列,不行时考虑斜率,再不行就考虑不等式什么的东西) 当dp的状态转移方程dp[i]的状态i需要从前面(0~i-1)个状态找出最优子决策做转移时 我们常常需要双重循环 (一重 ...
随机推荐
- 在airflow的BashOperator中执行docker容器中的脚本容易忽略的问题
dag模板 from airflow import DAG from airflow.operators.bash_operator import BashOperator from airflow. ...
- vs2019将小游戏打包成msi踩的坑(个人)
1.VS无Setup projecrt? vs2015之前是自带打包msi功能的,vs2017之后需要自己去下载插件: 下载地址:https://marketplace.visualstudio.co ...
- 串口(USART)框图的讲解
STM32 的 USART 简介 通用同步异步收发器(Universal Synchronous Asynchronous Receiver and Transmitter)是一个串行通信设备,可以灵 ...
- asp.net core-4.命令行配置
先用vs2017创建一个控制台应用程序,这里不做多的介绍. 现在命名空间中添加using Microsoft.Extensions.Configuration; 如果没有,就在依赖项—>管理Nu ...
- Nginx学习笔记(三):Nginx 请求处理
Request Nginx 中的 ngx_http_request_t 是对一个 http 请求的封装: 一个 http 请求包含:请求行.请求头.请求体,响应行.响应头.响应体 Nginx 处理请求 ...
- 怎样解决多层this指向全局对象window的问题
如下所示, 得到的结果里面, 第二个this指向的是window这个全局对象而非f2, 原因就是多层this造成的指向不明引起的. var a = { f1: function(){ console. ...
- 工欲善其事必先利其器之Vagrant + VirtualBox
Vagrant 可以管理 VirtualBox,实现快速配置创建虚拟机 1.下载软件 VirtualBox虚拟机下载地址:https://www.virtualbox.org/wiki/Downloa ...
- (十)Activitivi5之启动流程/完成任务的时候设置流程变量
一.启动流程的时候设置流程变量 1.1 案例 /** * 启动流程实例 */ @Test public void start() { Student student=new Student(); st ...
- (三)第一个 Hibernate项目
1.创建java工程,并导入hibernate所需要的jar包 2.通过IDE构建一个基础的Hibernate工程. 产生 hibernate.cfg.xml的框架总配置文件. H ...
- JavaScript--关于闭包(closure)
js代码在执行前会做的几件事情: 1.代码检测 2.预编译:在执行代码之前会对代码中的函数以及变量提前声明 并且做一些其他的处理 1.函数在执行前的一瞬间,会生成一个OA(object action) ...