题目描述

Zxr960115 是一个大农场主。他养了m只可爱的猫子,雇佣了p个铲屎官。这里有一条又直又长的道路穿过了农场,有n个山丘坐落在道路周围,编号自左往右从1到n。山丘i与山丘i-1的距离是Di米。铲屎官们住在1号山丘。

一天,猫子们外出玩耍。猫子i去山丘Hi游玩,在Ti时间结束他的游玩,然后在山丘Hi傻等铲屎官。铲屎官们必须把所有的猫子带上。每个铲屎官直接从H1走到Hn,中间不停下,可以认为不花费时间的把游玩结束的猫子带上。每个铲屎官的速度为一米每单位时间,并且足够强壮来带上任意数量的猫子。

举个栗子,假装我们有两个山丘(D2=1),有一只猫子,他想去山丘2玩到时间3。然后嘞铲屎官如果在时间2或者时间3从1号山丘出发,他就能抱走猫子。如果他在时间1出发那么就不行(猫子还在玩耍)。如果铲屎官在时间2出发,猫子就不用等他(ΔT=0)。如果他在时间3出发,猫子就要等他1个单位时间。

你的任务是安排每个铲屎官出发的时间,最小化猫子们等待的时间之和。

题解

一个裸的斜率优化……我竟然没有看出来……

每一只猫等待的时间是铲屎官出发的时间-到原点的路程+猫出现的时间

那么我们对每一只猫记录一下-到原点的路程+猫出现的时间,然后sort一下,那么就是把这个序列分成p个区间,每个区间权值为最大的数与每一个数的差之和,然后求最小权值

那么直接上斜率优化

 //minamoto
#include<iostream>
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
#define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
char buf[<<],*p1=buf,*p2=buf;
inline int read(){
#define num ch-'0'
char ch;bool flag=;int res;
while(!isdigit(ch=getc()))
(ch=='-')&&(flag=true);
for(res=num;isdigit(ch=getc());res=res*+num);
(flag)&&(res=-res);
#undef num
return res;
}
const int N=;
int q[N],h,t,n,m,p,r;ll dp[][N],c[N],d[N],sum[N];
inline double slope(int j,int k){return (dp[r^][j]+sum[j]-dp[r^][k]-sum[k])*1.0/(j-k);}
int main(){
//freopen("testdata.in","r",stdin);
n=read(),m=read(),p=read();
for(int i=;i<=n;++i) d[i]=read()+d[i-];
for(int i=;i<=m;++i){
int h=read(),t=read();
c[i]=t-d[h];
}
sort(c+,c++m);
for(int i=;i<=m;++i) sum[i]=sum[i-]+c[i];
for(int i=;i<=m;++i) dp[][i]=c[i]*(i-)-sum[i-];
for(int i=;i<=p;++i){
r=i&;
h=t=;
for(int i=;i<=m;++i){
while(h<t&&slope(q[h],q[h+])<c[i]) ++h;
dp[r][i]=dp[r^][q[h]]+c[i]*(i-q[h])-sum[i]+sum[q[h]];
while(h<t&&slope(q[t],q[t-])>slope(q[t],i)) --t;q[++t]=i;
}
}
printf("%lld\n",dp[p&][m]);
return ;
}

CF311B Cats Transport(斜率优化)的更多相关文章

  1. CF311B Cats Transport 斜率优化DP

    题面:CF311B Cats Transport 题解: 首先我们观察到山与距离其实是没有什么用的,因为对于任意一只猫,我们都可以直接算出如果有一个人要恰好接走它,需要在哪一时刻出发,我们设第i只猫对 ...

  2. $CF311B\ Cats\ Transport$ 斜率优化

    AcWing Description Sol 设f[i][j]表示前i个饲养员接走前j只猫咪的最小等待时间. 要接到j猫咪,饲养员的最早出发时间是可求的,设为d: $ d[j]=Tj-\sum_{k= ...

  3. 【题解】Cats Transport (斜率优化+单调队列)

    [题解]Cats Transport (斜率优化+单调队列) # When Who Problem Lang Verdict Time Memory 55331572 Jun/09/2019 19:1 ...

  4. Codeforces 311B Cats Transport 斜率优化dp

    Cats Transport 出发时间居然能是负的,我服了... 卡了我十几次, 我一直以为斜率优化写搓了. 我们能得出dp方程式 dp[ i ][ j ] = min(dp[ k ][ j - 1 ...

  5. CF331B Cats Transport[斜率优化dp+贪心]

    luogu翻译 一些山距离起点有距离且不同,m只猫要到不同的山上去玩ti时间,有p个铲屎官人要去把所有猫接走,步行速度为1单位每秒,从1走到N座山不停下,必须在猫玩完后才可以把他带走.可以提前出发.问 ...

  6. CodeForces 311 B Cats Transport 斜率优化DP

    题目传送门 题意:现在有n座山峰,现在 i-1 与 i 座山峰有 di长的路,现在有m个宠物, 分别在hi座山峰,第ti秒之后可以被带走,现在有p个人,每个人会从1号山峰走到n号山峰,速度1m/s.现 ...

  7. CF-311B Cats Transport(斜率优化DP)

    题目链接 题目描述 小S是农场主,他养了 \(M\)只猫,雇了 \(P\) 位饲养员. 农场中有一条笔直的路,路边有 \(N\) 座山,从 \(1\) 到 \(N\)编号. 第 \(i\) 座山与第 ...

  8. CF311B Cats Transport

    题意 Zxr960115 is owner of a large farm. He feeds m cute cats and employs p feeders. There's a straigh ...

  9. 题解 CF311B Cats Transport

    前置芝士:斜率优化  剥下这道题的外壳,让它变为一道裸的斜率优化. 很容易想到状态,但复杂度显然过不去,也没有单调性,只能自己创造. 令 $$c[i] = t - sum[i],sum[i] = \s ...

随机推荐

  1. leveldb单元测试之宏定义源码剖析

    前言 leveldb 是一个库,没有 main() 函数入口, 故非常难理清其中的代码逻辑.但好在库中有非常多的单元测试代码,帮助读者理解其中的各个模块的功能.然而,测试代码个人觉得一开始看时非常费解 ...

  2. 论文翻译:Conditional Random Fields as Recurrent Neural Networks

    Conditional Random Fields as Recurrent Neural Networks ICCV2015    cite237 1摘要: 像素级标注的重要性(语义分割 图像理解) ...

  3. js中遍历对象的属性和值的方法

    鉴于循环目标是个对象,length是为undefined,用map等对数组的循环方法不行,对象就用此下方法 for(var key in _this.lists.medicines){ medicin ...

  4. 使用window.open 实现弹框和居中对齐

    // 打开页面方法 window.open(url, '_blank', centerStyle('600', '400')+',toolbar=no,menubar=no,resizeable=no ...

  5. Python解Leetcode: 539. Minimum Time Difference

    题目描述:给定一个由时间字符组成的列表,找出任意两个时间之间最小的差值. 思路: 把给定的链表排序,并且在排序的同时把60进制的时间转化成十进制整数: 遍历排序的数组,求出两个相邻值之间的差值: 求出 ...

  6. Laravel框架与ThinkPHP框架的不同

    作为一个PHP菜鸟初学Laravel框架 在学习过程中我发现了其与TP框架的不同点,由于时间问题和认识还不够完善我先写出其中几点,有错误的地方希望各位大牛斧正... 1.渲染模版方式的不同:在Lara ...

  7. Centos7搭建在线yum源

    1: 首先关闭防护墙或者设置规则通过且关闭selinux Systemctl diablefirewalld  永久关闭防火墙 vim/etc/sysconfig/selinux 并修改SELINUX ...

  8. beego 参数配置

    详细配置请参考:https://godoc.org/github.com/astaxie/beego#pkg-constants. App配置 AppName 应用名称,默认是 beego.通过bee ...

  9. div可以同时设置背景图片和背景颜色吗?

    前言 当然可以同时设置 当图片背景色不透明时 情况一:当图片的长.宽 >= div的长.宽时 我们最终看到div背景是图片,之所以说是最终看到,是因为在页面加载时,我们先看到的div背景是颜色, ...

  10. 【opencv 源码剖析】 四、 Mat的赋值构造函数 和 拷贝构造函数

    1.赋值构造函数 右值引用 inline Mat& Mat::operator = (Mat&& m) { if (this == &m) return *this; ...