P2507 [SCOI2008]配对

题目背景

四川NOI2008省选

题目描述

你有 n 个整数Ai和n 个整数Bi。你需要把它们配对,即每个Ai恰好对应一个Bp[i]。要求所有配对的整数差的绝对值之和尽量小,但不允许两个相同的数配对。例如A={5,6,8},B={5,7,8},则最优配对方案是5ó8, 6ó5, 8ó7,配对整数的差的绝对值分别为2, 2, 1,和为5。注意,5ó5,6ó7,8ó8是不允许的,因为相同的数不许配对。

输入输出格式

输入格式:

第一行为一个正整数n,接下来是n 行,每行两个整数Ai和Bi,保证所有

Ai各不相同,Bi也各不相同。

输出格式:

输出一个整数,即配对整数的差的绝对值之和的最小值。如果无法配对,输

出-1。

输入输出样例

输入样例#1:

3
3 65
45 10
60 25

输出样例#1:

32

输入样例#2:

3
5 5
6 7
8 8

输出样例#2:

5

说明

30%的数据满足:n <= 104

100%的数据满足:1 <= n <= 105,Ai和Bi均为1到106之间的整数。

/*如果没有配对数字不能相同的限制,排序后扫一遍就可以了。两数组升序排序之后,尝试同位置配对,若同位置的两个数相同,那么肯定要尽量匹配离得近的其他数(为了使绝对值尽量小)。多次尝试可以证明配对的两个数的位置最多差两格远,不然会有更优方案。
*/
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<vector>
using namespace std;
const long long INF=1e13;
const int mxn=1e5+10;
int read(){int x=0,f=1;char ch=getchar();while(ch<'0' || ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0' && ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;
}
int n;
int a[mxn],b[mxn];
long long f[mxn];
inline long long clc(int x,int y){return a[x]==b[y]?INF:abs(a[x]-b[y]);
}
int main(){int i,j;n=read();for(i=1;i<=n;i++)a[i]=read(),b[i]=read();sort(a+1,a+n+1);sort(b+1,b+n+1);f[1]=clc(1,1);f[2]=min(f[1]+clc(2,2),clc(1,2)+clc(2,1));for(i=3;i<=n;i++){long long tmp=INF;tmp=min(f[i-1]+clc(i,i),f[i-2]+clc(i,i-1)+clc(i-1,i));tmp=min(tmp,min(f[i-3]+clc(i,i-2)+clc(i-1,i)+clc(i-2,i-1),f[i-3]+clc(i-2,i)+clc(i,i-1)+clc(i-1,i-2)));f[i]=tmp;}if(f[n]>INF)printf("-1\n");else printf("%lld\n",f[n]);return 0;
}

转载于:https://www.cnblogs.com/thmyl/p/7491798.html

洛谷P2507 [SCOI2008]配对相关推荐

  1. 洛谷P2507 [SCOI2008]配对 题解(dp+贪心)

    洛谷P2507 [SCOI2008]配对 题解(dp+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1299251 链接题目地址:洛谷P2507 [S ...

  2. 洛谷 P2756 飞行员配对方案问题 (二分图/网络流,最佳匹配方案)

    P2756 飞行员配对方案问题 题目背景 第二次世界大战时期.. 题目描述 英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2 名飞行员,其 ...

  3. 洛谷 - P2756 飞行员配对方案问题(二分图最大匹配+路径打印)

    题目链接:点击查看 题目大意:给出n个飞行员,m个外籍飞行员,每个外籍飞行员可以和多个英国飞行员匹配,每架飞机需要两名一名外籍飞行员和一名英国飞行员同时操作,问如何匹配才能使得一次能尽可能多的派出飞机 ...

  4. 洛谷 P2756 飞行员配对方案问题 二分图 匈牙利算法 链式前向星 汉子找妹子模型 最大流模板 FF算法

    题目链接: https://www.luogu.com.cn/problem/P2756 方法一: 算法:1:匈牙利算法 思路:1:汉子找妹子模型 #include<bits/stdc++.h& ...

  5. 洛谷 P2046 BZOJ 2007 海拔(NOI2010)

    题目描述 YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作 一个正方形,每一个区域也可看作一个正方形.从而,YT城市中包括(n+1)×(n+1)个 ...

  6. 洛谷-DFS-1101-单词方阵-个人AC题解及公共题解的笔记

    先上自己AC代码(博主这个代码修改过多次,只因代码长度过长) #include<bits/stdc++.h> using namespace std; #define MAXN 102 i ...

  7. 洛谷日报 2020年3月前索引

    2020 2019 2018 感觉洛谷日报全是干货!!!先记下来再说 2020 年洛谷日报索引 3 月 #260[dove]Church 编码(和 Lambda 演算) https://www.luo ...

  8. 洛谷日报索引(2020、2019、2018)

    历年洛谷日报索引 2020 2019 2018 感觉洛谷日报全是干货!!!先记下来再说 2020 年洛谷日报索引 3 月 #260[dove]Church 编码(和 Lambda 演算) https: ...

  9. [转载]洛谷日报索引

    2019年 6月 #183[朝田诗乃]你以为莫队只能离线?莫队的在线化改造 https://shoko.blog.luogu.org/moqueue #182[Heartlessly ]常用距离算法详 ...

最新文章

  1. oracle统计id出现次数,oracle 统计sql
  2. 基于深度学习的事件因果关系抽取综述
  3. 人人都能看懂LSTM
  4. python学习总目录
  5. C#者重建C++之路 - 运行机制的差异
  6. RDA8955中碰到的问题
  7. clearbom.php,clearBOM.php
  8. 题目1065:输出梯形 (直接用循环控制输出)+题目1432:叠筐 (数组控制形状,最后输出数组)...
  9. 实验12 编写0号中断的处理程序
  10. 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第4节 等待唤醒机制_2_等待唤醒案例分析...
  11. html 自动执行vbs代码,vbs脚本教程 怎样在bat脚本中调用vbs脚本
  12. 电路设计_示波器接地常识
  13. 【IDE工具】win10电脑设置保护眼睛色
  14. 马尔科夫不等式与切比雪夫不等式
  15. 国风PPT自制卷轴动效,你的PPT也能很“香“
  16. 移动硬盘在Windows和Mac上同时使用的巨坑
  17. 电脑开关电源维修图解
  18. js数组操作(push,pop,shift,unshift,slice,splice,concat,sort)
  19. java反射获取字段的顺序6_反射之获取字段
  20. 广东中考数学能用计算机吗,今年中考数学允许带计算器

热门文章

  1. 如何提升你的CSS技能?掌握这20个css技巧即可[完整版]
  2. mysql i o error_警告:mysqli_ERROR()需要精确的一个参数,0给定的错误
  3. python读取matlab矩阵_matlab、python中矩阵的互相导入导出方式
  4. opencv_图像反转
  5. c语言程序如何实现分组,c程序-实现随机分组.ppt
  6. 灰度重采样的方法分为_DSA医疗影像增强技术特点及方法
  7. cbitmap 从内存中加载jpg_Pytorch数据加载的分析
  8. 目录下文件过多无法删除
  9. 学习了Redis的五大数据类型,其底层实现你了解吗?
  10. SpringMVC中接收数据和返回数据