poj1980
首先想到费用流,但m<=100000还是算了吧
那就感觉要用dp了,首先将a,b排序
贪心一下可知,a,b的配对肯定不可能出现交叉
这样就可以dp了,复杂度O(nm)还是过不去
在贪心一下会发现,对于a[i],它只可能在j的左右n的范围内匹配(b[j]是b序列中第一个大于a[i]的)
这样就O(n2)了
type list=array[..] of longint;
var f:array[..,..] of longint;
c,a,b:list;
ans,p,k,i,j,l,r,s,e,n,m:longint; function min(a,b:longint):longint;
begin
if a>b then exit(b) else exit(a);
end; function max(a,b:longint):longint;
begin
if a>b then exit(a) else exit(b);
end; procedure qsort(var a :list;m:longint);
procedure sort(l,r: longint);
var i,j,x,y: longint;
begin
i:=l;
j:=r;
x:=a[(l+r) div ];
repeat
while a[i]<x do inc(i);
while x<a[j] do dec(j);
if not(i>j) then
begin
y:=a[i];
a[i]:=a[j];
a[j]:=y;
inc(i);
j:=j-;
end;
until i>j;
if l<j then sort(l,j);
if i<r then sort(i,r);
end; begin
sort(,m);
end; begin
readln(m,n);
for i:= to m do
readln(b[i]);
for i:= to n do
readln(a[i]);
qsort(a,n);
qsort(b,m);
p:=;
for i:= to n do
begin
while (p<=m) and (a[i]>=b[p]) do inc(p);
c[i]:=p;
end;
k:=;
for i:= to n do
begin
k:=-k;
l:=max(i-,c[i-]-n);
r:=min(m,c[i-]+n);
s:=max(i,c[i]-n);
e:=min(m,c[i]+n);
if i= then r:=m-n+;
f[k,s-]:=;
p:=l;
for j:=s to e do
begin
f[k,j]:=f[k,j-];
while (p<j) and (p<=r) do
begin
f[k,j]:=min(f[k,j],f[-k,p]);
inc(p);
end;
end;
for j:=s to e do
if f[k,j]<> then inc(f[k,j],abs(a[i]-b[j]));
end;
ans:=;
for i:=s to e do
ans:=min(ans,f[k,i]);
writeln(ans);
end.
poj1980的更多相关文章
- [POJ1980]Unit Fraction Partition(搜索)
Unit Fraction Partition Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 4571 Accepted ...
- OJ题目分类
POJ题目分类 | POJ题目分类 | HDU题目分类 | ZOJ题目分类 | SOJ题目分类 | HOJ题目分类 | FOJ题目分类 | 模拟题: POJ1006 POJ1008 POJ1013 P ...
- AHOI2018训练日程(3.10~4.12)
(总计:共90题) 3.10~3.16:17题 3.17~3.23:6题 3.24~3.30:17题 3.31~4.6:21题 4.7~4.12:29题 ZJOI&&FJOI(6题) ...
随机推荐
- ArrayBlockingQueue 源码阅读 问题(一)
今天阅读java.util.concurrent 中 ArrayBlockingQueue 的源码,发现其中有很多下面这行代码 final ReentrantLock lock = this.lock ...
- asp.net mvc 实现记忆返回的功能
大体思路是在当前跳转链接追加一个参数memoryguid,以guid为key把查询query保存在cookie里,跳转的时候带走这个guid,回来的时候还带着,这样我们就能根据这个guid从cooki ...
- SQL语句优化(分享)
一.操作符优化 1.IN 操作符 用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格.但是用IN的SQL性能总是比较低的,从Oracle执行的步骤来分析用IN的SQL与不用 ...
- Windows的计划任务
阅读目录 一:什么是Windows的计划任务? 二:如何设置计划任务 三:高级设置计划任务 一:什么是Windows的计划任务? 在日常的工作中,我们都有一些固定的或临时性的工作,而每次在爱机前一坐, ...
- maven常见命令总结
1.maven vm配置 -Xms512m -Xmx1024m -XX:PermSize=256m 2.启动tomcat clean package -Dpackage.environment=de ...
- [总结]RTMP流媒体技术零基础学习方法
本文主要总结一些我在学习RTMP流媒体技术过程中积累的经验.也为后来学习RTMP流媒体技术的人们一个参考.本文力图从简到难,循序渐进的介绍RTMP流媒体技术的方方面面,先从应用说起,逐步深化剖析相关工 ...
- ktv
自制KTV点歌系统经验 Windows Media Player控件播放 Windows Media Player控件的简单使用 1.播放一首歌曲的方法 Windows Media Pla ...
- 批处理文件安装与卸载Windows服务
//安装Windows服务 将RECPost.exe和RECPostService替换成自己的项目名称和服务名称,并将文件保存成bat格式.其中%cd%是获取相对路径 @echo off set fi ...
- DB2JAVIT:RC=9505解决方案
DB2JAVIT:RC=9505解决方案 题记:WIN7下装DB2,启动任务中心.控制中心报DB2JAVIT:RC=9505. 解决方案:进入(计算机—>管理—>本地用户和组)把用户加入到 ...
- MyBatis Generator自动生成MyBatis的映射代码
MyBatis Generator大大简化了MyBatis的数据库的代码编写,有了一个配置文件,就可以直接根据表映射成实体类.Dao类和xml映射.资源地址:MyBatis项目地址:http://my ...