ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

运输小猫

2022-03-07 22:32:10  阅读:174  来源: 互联网

标签:运输 小猫 int ll j1 j2 long include


有m个猫 p个人 n个地点 每个点有若干只猫
每个猫会在\(t_i\)的时候可以开始被接走
每个人只能从1走到n 距离上要花费时间
求小猫等待时间的和的最小值

贪心来创造dp序:
可以先考虑没有距离的情况 然后把距离减到 构成等效时间

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define ll long long
using namespace std;

const int N=1e5+10;
const ll INF=0x3f3f3f3f3f3f3f3f;
int read()
{
	int x=0,f=0,c=getchar();
	while(c<'0'||c>'9'){if(c=='-')f=1;c=getchar();}
	while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
	return f?-x:x;
}

int n,m,p;
ll d[N],h[N],t[N],a[N],sum[N],f[2][N];
int q[N],l,r;
//(x,f[i-1][x]+sum[x])
ll Y(int i,int x){return f[i^1][x]+sum[x];};

bool cmp_b(int i,int j1,int j2,int j3)
{
	return ( Y(i,j2)-Y(i,j1) )*(j3-j2)  >= ( Y(i,j3)-Y(i,j2) )*(j2-j1);
}

bool cmp_f(int i,int j1,int j2,ll k)
{
	return (Y(i,j2)-Y(i,j1)) <= k*(j2-j1); 
}

//n个地点 m只猫 p个人 
int main()
{
	n=read(); m=read(); p=read();
	for(int i=2;i<=n;i++) d[i]=d[i-1]+read();
	for(int i=1;i<=m;i++) h[i]=read(),t[i]=read();
	for(int i=1;i<=m;i++) a[i]=t[i]-d[h[i]];
	sort(a+1,a+m+1);
	for(int i=1;i<=m;i++) sum[i]=sum[i-1]+a[i];
	memset(f,0x3f,sizeof f);//初值还有防止赋值的作用
	f[0][0]=f[1][0]=0;	

// i&1 -> (i&1)^1
	for(int i=1;i<=p;i++)
	{
		bool now=i&1; 
		l=r=1; q[l]=0; 
		for(int j=1;j<=m;j++)
		{
			while(l<r&&cmp_f(now,q[l],q[l+1],a[j])) l++;
			f[now][j]=f[now^1][q[l]]+a[j]*(j-q[l])-(sum[j]-sum[q[l]]);
			while(l<r&&cmp_b(now,q[r-1],q[r],j)) r--;
			q[++r]=j;
		}
	}
	printf("%lld",f[p&1][m]);
	return 0;
}

注意: 在i=1的初值转移的时候 取min操作要通过合理赋值 来保证只能有一个值来转移
因此通常会用到无穷大无穷小的操作
取min的时候 在边界出 只有一个值能成功转移

标签:运输,小猫,int,ll,j1,j2,long,include
来源: https://www.cnblogs.com/juruoHBr/p/15978411.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有