2019.3.30 提高A组 T1 JZOJ 3187 的士

版权声明:虽然本蒟蒻很菜,但各位dalao转载请注明出处谢谢。 https://blog.csdn.net/xuxiayang/article/details/88915286

D e s c r p t i o n Descrption

在一个长度为 m m 的数轴的正半轴上有 n n 个牛,它们要从 A i A_i 到达 B i B_i ,你有一辆车,你需要把所有牛带到目的地,但你的车只能带一个牛,求从0出发载完所有牛并到达 m m 的最小行驶路程总长度

1 < = M < = 1 0 9 , n 1 0 5 1<=M<=10^9,n\leq10^5


S o l u t i o n Solution

首先带牛走的路程是一定要走的

现在我们要加上一段会带来影响的路程即可

显然是排序后的差值,时间复杂度: O ( n l o g n ) O(nlogn)


C o d e Code

#include<cstdio>
#include<algorithm>
using namespace std;int n,m,a[100001],b[100001];
long long ans;
signed main()
{
	scanf("%d%d",&n,&m);
	for(register int i=0;i<n;i++) scanf("%d%d",a+i,b+i),ans+=abs(a[i]-b[i]);
	a[n]=m;b[n++]=0;
	sort(a,a+n);sort(b,b+n);
	for(register int i=0;i<n;i++) ans+=abs(a[i]-b[i]);
	printf("%lld",ans);
}

猜你喜欢

转载自blog.csdn.net/xuxiayang/article/details/88915286
今日推荐