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 ...
随机推荐
- php+sqlserver处理读取decimal 类型数据,不满1的数字会去掉0的问题
php+sqlserver处理读取decimal 类型数据,如果数据不满1,会去掉0的问题.比如读取的数据是 0.05,会显示 .05 function convert_number($number) ...
- python的爬虫代理设置
现在网站大部分都是反爬虫技术,最简单就是加代理,写了一个代理小程序. # -*- coding: utf-8 -*- #__author__ = "雨轩恋i" #__date__ ...
- php安装php-redis扩展
下载安装php-redis扩展: 地址:https://github.com/phpredis/phpredis/ $ wget http://pecl.php.net/get/redis-3.1.2 ...
- sqli-labs 1-20实验记录
1. less1 首先输入?id=1 查找是否有注入点. 输入单引号 回显报错 说明有注入漏洞 而且是数字型 输入 1’ or 1=1 order by 1 猜测列名# 这里发现#不能变成url编码 ...
- 第三章 最简单的C程序设计——顺序程序设计
一.数据的表现形式及其运算 1.常量和变量 在计算机高级语言中,数据有两种表现形式:常量和变量. 1.1.常量 在程序运行过程中,其值不能被改变的量称为常量.如:5,6,32,0.111. 数值常量就 ...
- 利用nodejs实现商品管理系统(一)
一.界面分类:用户登录界面,商品管理界面(包含商品编辑,创建,删除,列表界面) 功能实现:1.用户输入用户名与密码,通过加密,与数据库校验,如果正确,则跳转到商品管理界面,否则一直停留在用户界面. 2 ...
- Ubuntu中搭建Hadoop集群(简记)
stp1:在Vmware虚拟机上创建Ubantu.2环境 步骤:文件—>新建虚拟机—>典型(下一步)—>下一步——>位置(不建议放c盘,文件地址一定要全英文)—>下一步— ...
- Python的异常
一.异常的常用形式 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行.一般情况下,在Python无法正常处理程序时就会发生一个异常.异常是Python对象,表示一个错误.当Pyth ...
- Django admin操作
无名小妖 昵称:无名小妖园龄:1年6个月粉丝:22关注:1 +加关注 搜索 常用链接 我的随笔 我的评论 我的参与 最新评论 我的标签 我的标签 Python(1) python3 ...
- 「日常训练」Common Subexpression Elimination(UVa-12219)
今天做的题目就是抱佛脚2333 懂的都懂. 这条题目干了好几天,最后还是参考别人的代码敲出来了,但是自己独立思考了两天多,还是有收获的. 思路分析 做这条题我是先按照之前的那条题目(The SetSt ...