题目描述

涵涵有两盒火柴,每盒装有\(n\)根火柴,每根火柴都有一个高度。 现在将每盒中的火柴各自排成一列, 同一列火柴的高度互不相同, 两列火柴之间的距离定义为:$ \sum (a_i-b_i)^2$

其中\(a_i\) 表示第一列火柴中第\(i\)个火柴的高度,\(b_i\)表示第二列火柴中第\(i\)个火柴的高度。

每列火柴中相邻两根火柴的位置都可以交换,请你通过交换使得两列火柴之间的距离最小。请问得到这个最小的距离,最少需要交换多少次?如果这个数字太大,请输出这个最小交换次数对 \(99,999,997\)取模的结果。

输入输出格式

输入格式:

共三行,第一行包含一个整数\(n\),表示每盒中火柴的数目。

第二行有\(n\)个整数,每两个整数之间用一个空格隔开,表示第一列火柴的高度。

第三行有\(n\)个整数,每两个整数之间用一个空格隔开,表示第二列火柴的高度。

输出格式

一个整数,表示最少交换次数对\(99,999,997\)取模的结果。

样例

INPUT

4
2 3 1 4
3 2 1 4

OUTPUT

1

INPUT

4
1 3 4 2
1 7 2 4

OUTPUT

2

HINT

【输入输出样例说明1】

最小距离是\(0\),最少需要交换\(2\)次,比如:交换第\(1\)列的前\(2\)根火柴或者交换第\(2\)列的前\(2\)根火柴。

【输入输出样例说明2】

最小距离是\(10\),最少需要交换\(2\)次,比如:交换第\(1\)列的中间\(2\)根火柴的位置,再交换第\(2\)列中后\(2\)根火柴的位置。

【数据范围】

对于\(10%\)的数据, \(1≤n≤10\)

对于 \(30%\)的数据,\(1≤n≤100\)

对于 \(60%\)的数据,\(1≤n≤1,000\)

对于 \(100%\)的数据,\(1 ≤ n ≤ 100,000,0≤\)火柴高度\(≤maxlongint\)

SOLUTION

离散+树状数组求逆序对

题目这个换来换去然后得到最小距离的要求很容易就让人想到有一道名为“多米诺骨牌”的dp题。但实际上并不一样,那道题是上下换,两个序列的组成很可能会改变很大,而且两题的数据范围等也存在差异,反正这题就不能用那种dp方法做。

本题的核心思路就是:若要使\(\sum (a_i-b_i)^2\)最小,每对\(abs(a_i-b_i)\)的对答案的贡献应该尽可能的少,然后就可以想到若是把\(a,b\)两个序列从小到大排序,然后得到的两个序列就能构成最优答案。那么怎么计算交换次数呢?我们根据未排序序列的\(a[i]\)与其所对应的\(b[i]\)位置来计算交换次数。

引用@ZJYelizaveta的题解部分内容:
"好了,这道题目的精华在于对于新建序列!

假设我们现在有离散化后的序列\(a = {4, 3, 1, 2}\),\(b = {1, 3, 2, 4}\)

我们令\(q[a[i]] = b[i]\),相当于以 \(a[i]\)为关键字对序列 b[i]b[i]b[i] 排序。

若序列 \(a\) 与序列\(b\)相等,那么此时\(q[a[i]]\)应该等于\(a[i]\)的,也就是\(q[i] = i\)。

那么也就是说如果我们想让序列\(a\)与序列\(b\)相等,那么我们需要让\(q\)升序排列。

问题就变为,将原本乱的\(q\)序列升序排列的最少交换次数。

诶,这不就是逆序对吗?

于是,用树状数组求之即可。
"

并且这里要注意:我们存在\(q\)里的\(c,d\)都代表的是\(a,b\)离散后的位置,因为我们的最优解只需要位置相对应就够了,不一定要求达到真正的\(a,b\)从小到大升序排列。这一点要十分注意!!!

Luogu_1966_火柴排队的更多相关文章

  1. Codevs 3286 火柴排队 2013年NOIP全国联赛提高组 树状数组,逆序对

    题目:http://codevs.cn/problem/3286/ 3286 火柴排队  2013年NOIP全国联赛提高组  时间限制: 1 s   空间限制: 128000 KB   题目等级 : ...

  2. 洛谷P1966 【火柴排队】

    题解 P1966 [火柴排队] 说明: 在数学中有个公式: (a1-b1)^2+(a2-b2)^2<(a2-b1)^2+(a1-b2)^2 (你可以自己试着证一下) 两列火柴对应的两根火柴在各列 ...

  3. [树状数组+逆序对][NOIP2013]火柴排队

    火柴排队 题目描述 涵涵有两盒火柴,每盒装有n根火柴,每根火柴都有一个高度.现在将每盒中的火柴各自排成一列,同一列火柴的高度互不相同,两列火柴之间的距离定义为:∑ (ai-bi)2,i=1,2,3,. ...

  4. 【刷题】洛谷 P1966 火柴排队

    题目描述 涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度. 现在将每盒中的火柴各自排成一列, 同一列火柴的高度互不相同, 两列火柴之间的距离定义为: ∑(ai-bi)^2 其中 ai 表示 ...

  5. [NOIP2013提高&洛谷P1966]火柴排队 题解(树状数组求逆序对)

    [NOIP2013提高&洛谷P1966]火柴排队 Description 涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度. 现在将每盒中的火柴各自排成一列, 同一列火柴的高度互不相 ...

  6. LOJ2609. NOIP2013 火柴排队 【树状数组】

    LOJ2609. NOIP2013 火柴排队 LINK 题目大意: 给你两个数列,定义权值∑i=1(ai−bi)^2 问最少的操作次数,最小化权值 首先需要发现几个性质 最小权值满足任意i,j不存在a ...

  7. 洛谷 P1966 火柴排队 解题报告

    P1966 火柴排队 题目描述 涵涵有两盒火柴,每盒装有 \(n\) 根火柴,每根火柴都有一个高度. 现在将每盒中的火柴各自排成一列, 同一列火柴的高度互不相同, 两列火柴之间的距离定义为: \(\s ...

  8. 【洛谷P1966】火柴排队

    火柴排队 题目链接 ∑(ai​−bi​)^2=∑ai^2-2*∑ai*bi+∑bi^2 显然∑ai^2+∑bi^2是不变的,我们要让 2*∑ai*bi最大,才能使原式最小 然后我们一眼就可以看出来, ...

  9. luogu P1966 火柴排队 (逆序对)

    luogu P1966 火柴排队 题目链接:https://www.luogu.org/problemnew/show/P1966 显然贪心的想,排名一样的数相减是最优的. 证明也很简单. 此处就不证 ...

随机推荐

  1. TensorFlow中的Session、Graph、operation、tensor

    TensorFlow中的Session.Graph.operation.tensor

  2. DOCKER 学习笔记2 认识dockerfile自定义镜像

    Dockerfile 概念 Dockerfile 是一个文本文件,但包含所构建容器在运行时候的参数.库.资源配置.可以简单理解为我们现有的镜像,比如Centos/Nginx 但我们需要构建一个容器的时 ...

  3. MTF的倾斜边缘计算方法

    光学系统性能的衡量方法有很多,常见的有点扩散函数法.瑞利判断法.点 列图法.光学传递函数(MTF)法等,其中 MTF 法在光学系统和镜头加工制造中 使用 最为广泛.MTF 曲线真实的反映了成像系统将物 ...

  4. 论文翻译——Character-level Convolutional Networks for Text Classification

    论文地址 Abstract Open-text semantic parsers are designed to interpret any statement in natural language ...

  5. hdu 6035 Colorful Tree(虚树)

    考虑到树上操作:首先题目要我们求每条路径上出现不同颜色的数量,并把所有加起来得到答案:我们知道俩俩点之间会形成一条路径,所以我们可以知道每个样例的总的路径的数目为:n*(n-1)/2: 这样单单的求, ...

  6. ORs-2-Genome Coverage and the OR Subgenome

    Genome Coverage and the OR Subgenome 因为: 爬行类动物的的gene numbers比较大,而birds 的 gene numbers 处于(182-688) 其中 ...

  7. jsonConfig用法

    1.先编写jsonConfig的初始化代码 private JsonConfig jsonConfig; public action构造方法() { jsonConfig = new JsonConf ...

  8. LiauidCrystal

    1.begin()函数语法: lcd.begin(cols,rows) cols:列数: rows:行数: 2.print()函数,语法: lcd.print(data) lcd.print(data ...

  9. LabVIEW的优点

    知道Labview的英文全称是什么吗?Labview的创始公司的名字是什么吗?哈哈,其实这就是NI(National Instruments)美国国家仪器公司创造Labview的初衷:代替传统测量仪器 ...

  10. 解决scoped 下confirm 样式问题