bzoj1237
假如不存在相等的两个数不能配对,那很容易贪心得到,A中rank 1匹配B中rank 1
A中rank2 匹配B中rank 2……
有了相等不能匹配这个条件,那么A中rank i可能和rank i,i-1,i+1匹配
也有可能三对数字交换匹配
dp一下就好了
const inf=;
type node=array[..] of longint;
var a,b:node;
f:array[..] of int64;
n,i:longint; function min(a,b:int64):int64;
begin
if a>b then exit(b) else exit(a);
end; function calc(a,b:longint):longint;
begin
if a=b then exit(inf)
else exit(abs(a-b));
end; procedure qsort(var a:node);
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(,n);
end; begin
readln(n);
for i:= to n do
readln(a[i],b[i]);
qsort(a);
qsort(b);
f[]:=calc(a[],b[]);
f[]:=min(f[]+calc(a[],b[]),calc(a[],b[])+calc(a[],b[]));
for i:= to n do
begin
f[i]:=f[i-]+calc(a[i],b[i]);
f[i]:=min(f[i],f[i-]+calc(a[i-],b[i])+calc(a[i],b[i-]));
f[i]:=min(f[i],f[i-]+calc(a[i],b[i-])+calc(a[i-],b[i])+calc(a[i-],b[i-]));
f[i]:=min(f[i],f[i-]+calc(a[i],b[i-])+calc(a[i-],b[i-])+calc(a[i-],b[i]));
end;
if f[n]=inf then writeln(-) else writeln(f[n]);
end.
bzoj1237的更多相关文章
- 【BZOJ1237】配对(贪心,DP)
题意:有n个a[i]和b[i],调整顺序使abs(a[i]-b[i])之和最小,但a[i]<>b[i].保证所有 Ai各不相同,Bi也各不相同. 30%的数据满足:n <= 104 ...
- BZOJ1237: [SCOI2008]配对
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1237 题目大意:你有n 个整数Ai和n 个整数Bi.你需要把它们配对,即每个Ai恰好对应一 ...
- bzoj千题计划179:bzoj1237: [SCOI2008]配对
http://www.lydsy.com/JudgeOnline/problem.php?id=1237 如果没有相同的数不能配对的限制 那就是排好序后 Σ abs(ai-bi) 相同的数不能配对 交 ...
随机推荐
- A题笔记(13)
Evaluate Reverse Polish Notation Reverse Words in a String 类似的,需要将原序列后序排列的时候,都可以用 栈 来实现 stack<int ...
- webapp构建工具库
Meteor:JavaScript App Platform braintree:在线支付 jquery datetimepicker:日期控件 Hotjar Tracking Code:网站追踪 Z ...
- IOS开发中针对UIImageView的几种常用手势
// // ViewController.m // 05-手势 // // Created by wanghy on 15/9/21. // Copyright (c) 2015年 wangh ...
- == 和 equals()的区别
package com.liaojianya.chapter1; /** * This program demonstrates the difference between == and equal ...
- Java的云打印Lodop
打印某一个网页上的内容我们都经常遇到过,比如网上申请港澳通行证时需要填写申请表,然后把申请表给打印出来.像这样的打印技术是怎么实现?这种打印可以通过一种叫云打印的插件来做,按我的理解云打印的技 ...
- python中的gil是什么?
1.gil是什么? 在Python源代码:Python-2.7.10/Python/ceval.c.我看到的Python源代码版本为2.7.10 static PyThread_type_lock i ...
- ellang 中进程异步通信中的信箱与保序
erlang 进程通讯中 执行到 receive 语句时 如果信箱没有消息可以匹配时会暂停等待消息. go() -> register(echo, spawn(test_pid,loop,[]) ...
- PHP问题
/usr/bin/ld: cannot find -lltdlcollect2: ld returned 1 exit statusmake: *** [libphp5.la] 错误 1 缺少libt ...
- 《sort命令的k选项大讨论》-linux命令五分钟系列之二十七
本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...
- php加了命名空间没引入初始化文件:类的命名空间要与文件夹名一致namespace Business\Event;缺少了Event
php加了命名空间没引入初始化文件:类的命名空间要与文件夹名一致namespace Business\Event;缺少了Event