Cats Transport

现在有n座山,第i座山的坐标为\(d_i\),初始p个饲养员在山1,有m只猫,每只猫有一个属性\(h_i,t_i\)表示猫i

在\(h_i\)以及它在\(t_i\)时间后才能被带走(\(t_i\)之前不算做在等待),现在请安排饲养员的出发时间,每个饲养员的速度都为每个单位长度每个单位时间,让所有的猫被带走之前的等待时间之和最短。

\(2<=n<=10^5,1<=m<=10^5,1<=p<=100\)

注意到饲养员的出发时间是不可能作为状态的,现在让d变为其前缀和,设一个饲养员的出发时间为t,于是考虑等待时间对于一只猫i的等待时间应为\(t+d_{h_i}-t_i\),注意到猫要能够被饲养员带走,必然有\(t+d_{h_i}\geq t_i\),也即\(t\geq t_i-d_{h_i}\),于是为了简单判断猫是否能被带走,我们应该维护一个\(g_i=t_i-d_{h_i}\),为了便于判断一个饲养员能带走哪些猫,我们自然要排序,于是现在即发现问题即哪些连续的猫被哪个饲养员带走,于是问题被转化成了任务安排。

因此设\(f[i][j]\)表示前i个饲养员,带走前j只猫的最少等待时间,设s为g的前缀和,不难有

\[f[i][j]=f[i-1][k]_{0\leq k< i}+\sum_{l=k+1}^j(g_j-g_l)
\]

边界:\(f[0][0]=0\),其余无限大

经整理,它的斜率优化式应为

\[s_k+f[i-1][k]=kg_j+f[i][j]-jg_j+s_j
\]

发现k是递增的,而g也是递增的,于是我们只要用单调队列维护斜率,在按斜率关系弹掉队首,答案取队首即可,时间复杂度易知\(O(np)\)。

参考代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define il inline
#define ri register
#define Size 200050
#define ll long long
using namespace std;
int T[Size],L,R;
ll s[Size],a[Size],sa[Size],dp[101][Size],y[Size];
template<class free>il void read(free&);
int main(){
int n,m,p;read(n),read(m),read(p);
for(int i(2);i<=n;++i)read(s[i]),s[i]+=s[i-1];
for(int i(1),j,k;i<=m;++i)read(j),read(k),a[i]=k-s[j];
sort(a+1,a+m+1);for(int i(1);i<=m;++i)sa[i]=sa[i-1]+a[i];
memset(dp,1,sizeof(dp)),dp[0][0]=0;
for(int i(1),j;i<=p;++i){L=R=1;
for(j=1;j<=m;++j){y[j]=dp[i-1][j]+sa[j];
while(L<R&&(y[T[L+1]]-y[T[L]])<=a[j]*(T[L+1]-T[L]))++L;
dp[i][j]=dp[i-1][T[L]]+(j-T[L])*a[j]-sa[j]+sa[T[L]];
while(L<R&&(y[T[R]]-y[T[R-1]])*(j-T[R])
>=(y[j]-y[T[R]])*(T[R]-T[R-1]))--R;T[++R]=j;
}}printf("%lld",dp[p][m]);
return 0;
}
template<class free>
il void read(free &x){
x&=0;ri char c;while(c=getchar(),c<'0'||c>'9');
while(c>='0'&&c<='9')x=(x<<1)+(x<<3)+(c^48),c=getchar();
}

Cats Transport的更多相关文章

  1. 一本通1609【例 4】Cats Transport

    1609:[例 4]Cats Transport 时间限制: 1000 ms         内存限制: 524288 KB sol:非常偷懒的截图了事 注意:只能猫等人,不能人等猫 对于每只猫,我们 ...

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

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

  3. CF311B Cats Transport 斜率优化DP

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

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

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

  5. Cats transport(codeforces311B)(斜率优化)

    \(Cats Transport\) 感觉这道题题面不好讲,就自翻了一个新的,希望有助于大家理解其思路: 大致题意: \(wch\) 的家里有 \(N\) 座山(山呈直线分布,第 \(i-1\) 座山 ...

  6. 题解-Cats Transport

    题解-Cats Transport Cats Transport 有 \(n\) 个山丘,\(m\) 只猫子,\(p\) 只铲屎官.第 \(i-1\) 个山丘到第 \(i\) 个山丘的距离是 \(d_ ...

  7. 笔记-Cats Transport<已写题解>

    笔记-Cats Transport Cats Transport 令 \(D_i=\sum_{j=1}^id_i\),\(T_i=t_i-D_{h_i}\). 为 \(T_i\) 从小到大排序,令 \ ...

  8. (中等) CF 311B Cats Transport,斜率优化DP。

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

  9. CF311B Cats Transport

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

随机推荐

  1. Haproxy负载均衡/动静分离(haproxy各选项详细解释)

    在前端领域做负载均衡,动静分离的程序有很多,比较常用的是nginx和Haproxy,今天就说一下 Haproxy在这两方面的表现,文章参考很多网文写成,再加上自己的实验成果,文中所有解释都经过实际环境 ...

  2. linux网卡驱动更新方法

    kernel: eth0: igb_reset_task: Reset adapter解决方法 1. LVS集群web项目,运行大概一个月左右出现访问慢的情况,查询mysql服务器时/var/log/ ...

  3. Array.prototype.slice.call()等几种将arguments对象转换成数组对象的方法

    网站搬迁,给你带来的不便敬请谅解! http://www.suanliutudousi.com/2017/10/10/array-prototype-slice-call%E7%AD%89%E5%87 ...

  4. Size Assert

    判断返回内容的大小

  5. ArcGis基础——动态显示面要素的面积值

    很基础,不赘述. 1.在catalog(目录)新建一个PersonalGeoDatabase(个人地理数据库),导入需要处理的Shapefile文件. 坐标系统,存储路径与命名根据自己需求设定 2.直 ...

  6. 微信小程序之评分页面

    首先给大家看看做好的效果图: 一.接下来我们说一下评分这个功能: 实际上就是一个简单的js,首先我们遍历出小星星,此时默认给的五星好评,在给他们一个点击事件,当点击时,我们获取到当前点击的是第几颗:代 ...

  7. 【学术篇】SPOJ FTOUR2 点分治

    淀粉质入门第一道 (现在个人认为spoj比bzoj要好_(:з」∠)_ 关于点分治的话推荐去看一看漆子超的论文>>>这里这里<<< 之前一直试图入点分治坑, 但是因 ...

  8. 设计Twitter的api

    355. Design Twitter 题意:设计Twitter的API,实现以下功能. postTweet(userId, tweetId): Compose a new tweet. getNew ...

  9. javabean 深拷贝

    <!-- https://mvnrepository.com/artifact/uk.com.robust-it/cloning --> <dependency> <gr ...

  10. Vue Router高级

    路由组件传参 通过props解耦 const User = { props: ['id'], template: '<div>User {{ id }}</div>' } co ...