http://poj.org/problem?id=3375 (题目链接)

题意

  有$M$个网络接口和$N$台计算机,给出它们的坐标(在同一直线上),一个接口只能接一台计算机,费用为两坐标之差的绝对值,问最小费用为多少。

Solution

  $f[i][j]$表示前$i$台计算机连在前$j$个网络接口上的最小费用。转移:$$f[i][j]=min(f[i][j-1],f[i-1][j-1]+|X[i]-X[j]|)$$

  考虑$m$的范围很大,肯定有很多是无用的,我们找到距离$i$最近的接口$pos$,从$N-pos$ for到$N+pos$即可。

细节

  LL

代码

// poj3375
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
#define LL long long
#define inf (1ll<<60)
#define Pi acos(-1.0)
#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
using namespace std; const int maxn=200010;
int t1[maxn],t2[maxn],pos[maxn],n,m;
LL f[2][maxn]; int main() {
scanf("%d%d",&m,&n);
for (int i=1;i<=m;i++) scanf("%d",&t2[i]);
for (int i=1;i<=n;i++) scanf("%d",&t1[i]);
sort(t1+1,t1+n+1);
sort(t2+1,t2+m+1);
for (int i=1;i<=n;i++) pos[i]=lower_bound(t2+1,t2+1+m,t1[i])-t2;
memset(f,0x7f,sizeof(f));
for (int i=0;i<=m;i++) f[0][i]=0;
int p=0,q=1,l,r,u=0,v=m;
for (int i=1;i<=n;i++) {
l=max(1,pos[i]-n),r=min(m,pos[i]+n);
p^=1,q^=1;
for (int j=l;j<=r;j++) f[p][j]=min(f[p][j-1],f[q][min(j-1,v)]+abs(t1[i]-t2[j]));
for (int j=u;j<=v;j++) f[q][j]=inf;
u=l,v=r;
}
printf("%lld",f[p][r]);
return 0;
}

最新文章

  1. Gulp: Getting Started
  2. CSS实现透明边框
  3. 【HDU 5839】Special Tetrahedron(计算几何)
  4. python初识第二篇
  5. mysql replace into用法与坑
  6. Android开发环境的发展演变
  7. Asp程序的IIS发布
  8. iOS 汉字转拼音
  9. nginx配合modsecurity实现WAF功能
  10. RDLC系列之七 条码打印
  11. mongoDB 3.0.3 以上GUI 连接认证问题
  12. Thinkphp常用标签
  13. Struts(二十三):使用声名式验证
  14. Zabbix如何设置脚本告警
  15. (转)前端开发-发布一个NPM包之最简单易懂流程
  16. 线程的start方法和run方法的区别
  17. 使用VSCode调试Jest
  18. (链表) leetcode 21. Merge Two Sorted Lists
  19. 吴裕雄 python 爬虫(2)
  20. liunx基础命令

热门文章

  1. 【翻译】HOG, Histogram of Oriented Gradients / 方向梯度直方图 介绍
  2. 分享一篇IBN(Intent-based networking)调研报告
  3. Python学习之路目录(收藏整理)
  4. 离线人脸识别 ArcFaceSharp -- ArcFace 2.0 SDK C#封装库分享
  5. centos下部署禅道流程
  6. mybatis之insert语句报错Cause: java.sql.SQLException: sql injection violation, syntax error: ERROR. token : WHERE,
  7. 《Spring1之 第一次站立会议(重发)》
  8. C语言:一个能自动生成小学四则运算题目的程序
  9. 《TCP/IP 详解 卷1:协议》第 5 章:Internet 协议
  10. java集合LinkedList