poj3375 Network Connection
Description
There are \(M\) network interfaces in the wall of aisle of library. And \(N\) computers next to the wall need to be connected to the network. A network interface can only connect with one computer at most. To connect an interface with coordinate \(x\) with a computer with coordinate \(y\) needs \(|x - y|\) unit of length of network cable. Your task is to minimize the total length of network cables to be used.
Input
The first line contains two integers \(M (1 ≤ M ≤ 100000), N (1 ≤ N ≤ 2000, N ≤ M)\). The following \(M + N\) lines each contains a integer coordinate. The first \(M\) coordinates are corresponding to the network interfaces, and the next \(N\) ones corresponding to the computers. All coordinates are arranged in \([0, 1000000]\). Distinct interfaces may have the same coordinate, so do the computers.
Output
Print an integer, representing minimum length of network cables to be used.
Sample Input
4 2
1
10
12
20
11
15
Sample Output
4
排序+离散化。
状态\(f[i][j]\)表示考虑前\(i\)台电脑,最后一台插在第\(j\)个接口上的最小代价。转移$$f[i][j] = \min_{i-1 \le k < j} { f[i-1][k]+\mid A_i-B_j \mid }$$可用前缀和优化,复杂度\(O(NM)\)。
减少无用状态:每台电脑的接口一定不会离他很远。假设离\(i\)最近的接口为\(j\),只需要枚举\(j-N \sim j+N\)这些接口即可,这里面一定有些是空的。
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
using namespace std;
typedef long long ll;
const int maxn = 2010,maxm = 100010;
const ll inf = 1LL<<60;
ll f[2][maxm],ans = inf; int N,M,A[maxm],B[maxn];
inline int gi()
{
char ch; int ret = 0,f = 1;
do ch = getchar(); while (!(ch >= '0'&&ch <= '9')&&ch != '-');
if (ch == '-') f = -1,ch = getchar();
do ret = ret*10+ch-'0',ch = getchar(); while (ch >= '0'&&ch <= '9');
return ret*f;
}
int main()
{
freopen("3375.in","r",stdin);
freopen("3375.out","w",stdout);
M = gi(); N = gi();
for (int i = 1;i <= M;++i) A[i] = gi();
for (int i = 1;i <= N;++i) B[i] = gi();
sort(A+1,A+M+1); sort(B+1,B+N+1);
for (int i = 0;i <= M;++i) f[1][i] = inf;
for (int i = 1,now = 1,last = 0,Lastl = 0,Lastr = M;i <= N;++i,swap(now,last))
{
int pos = lower_bound(A+1,A+M+1,B[i])-A,l = max(1,pos-N-1),r = min(M,pos+N+1);
for (int j = l;j <= r;++j) f[now][j] = min(f[now][j-1],f[last][min(j-1,Lastr)]+(ll)abs(A[j]-B[i]));
for (int j = Lastl;j <= Lastr;++j) f[last][j] = inf;
Lastl = l; Lastr = r;
}
for (int i = 1,now = N&1;i <= M;++i) ans = min(ans,f[now][i]);
cout << ans << endl;
fclose(stdin); fclose(stdout);
return 0;
}
poj3375 Network Connection的更多相关文章
- RobotFramework自动化测试框架-移动手机自动化测试Get Network Connection Status和Set Network Connection Status关键字的使用
Get Network Connection Status关键字用来获取手机的网络连接状态.在获取到连接状态后,会返回不同的数字. Set Network Connection Status关键字用来 ...
- This network connection does not exist
This network connection does not exist 在windows server 2008上面map了一个磁盘,共享的folder被我停止共享后,点击该磁盘的disconn ...
- 初次使用git就遭遇不测,提示没有这个服务连接和需要配置git的一个http参数 NO network connection,SSl host could not be verified ...
第一次使用git 拉取服务上的项目到本地,结果,在拿到访问的url地址后,输入用户名密码,失败了. --eclispe 4.5.3 继承了git客户端插件的版本 ------下一步后,报错 NO n ...
- Learning Experience of Big Data:The First Day-Try to set up a network connection on my virtural machine
After we install our virtual machine,the first thing we should do is to set up a network connection ...
- Network Connection Lost When Windows 8 Goes To Sleep
http://www.kapilarya.com/fix-network-connection-lost-when-windows-8-goes-to-sleep http://superuser.c ...
- The network connection was lost 文件下载错误提示
假设出现这种错误,可能是模拟器断网,重新启动下模拟器就能够:The network connection was lost
- Adjusting Network Connection
Adjusting Network Connection The Selenium Mobile JSON Wire Protocol Specification supports an API fo ...
- 使用putty连接虚拟机上的centos提示Network:connection refused
转自:https://yeyuan.iteye.com/blog/1266484 今天早上开机之后,像往常一样使用putty连接linux的时候,突然提示Network:connection refu ...
- MATLAB实例:构造网络连接图(Network Connection)及计算图的代数连通度(Algebraic Connectivity)
MATLAB实例:构造网络连接图(Network Connection)及计算图的代数连通度(Algebraic Connectivity) 作者:凯鲁嘎吉 - 博客园 http://www.cnbl ...
随机推荐
- 微信小程序scroll-viwe遇到的问题
1.当使用scroll-view的时候里面不可以使用某些标签 2.当使用scroll-view的时候会出现,子元素中滑动的时候会出现滚动的情况,我遇到的是因为view设置了高度和行高,一旦设置了这个, ...
- Mysql基础2-数据定义语言DDL
主要: 数据库操作语句 数据表操作语句 视图定义语句 数据库表设计原则 DDL: Data Definition Language 数据定义语言 数据库操作语句 创建库 创建数据库: create d ...
- Spark-源码-TaskScheduler初始化过程, ClientActor向Master发送注册任务信息过程
Spark版本 1.3 Spark源码 Spark.createTaskScheduler TaskScheduler初始化过程 1.// SparkContext中 /** * Create a t ...
- 程序设计的SOLID原则
要想设计一个良好的程序,建议采用SOLID原则,若考虑了SOLID,可以使程序在模块内具有高内聚.而模块间具有低耦合的特点. SOLID原则包括5方面的内容: S---单责任原则(SRP) 一个模块只 ...
- STM32CubeMx配置SPI注意的一个问题
这样配置SPI引脚 然后这样配置SPI参数 生成立这样的配置代码 /* SPI2 init function */static void MX_SPI2_Init(void){ /* SPI2 par ...
- 转:python教程专题资源免费下载整理合集收藏
python教程专题资源免费下载整理合集收藏 < Python学习手册(第4版)>(Learning Python, 4th Edition)[PDF] 94MB 简体中文 <Pyt ...
- git的关于测试的相关的内容
今天,我们来讲一下git的分支的一些内容,在以前的时候,我一直都以为,对于一个项目,这个时候,我们把这个项目叫做项目a项目,这个a项目有master,staging,以及我自己的分支xxx,当我想上测 ...
- luogu4172 [WC2006]水管局长
就是用 lct 维护最小生成树 ref #include <algorithm> #include <iostream> #include <cstdio> #in ...
- 【目录】Spring 源码学习
[目录]Spring 源码学习 jwfy 关注 2018.01.31 19:57* 字数 896 阅读 152评论 0喜欢 9 用来记录自己学习spring源码的一些心得和体会以及相关功能的实现原理, ...
- mysql连接jdbc查询代码
package com.answer.test; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.S ...