描述

涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度。现在将每盒中的火柴各自排成一列,同一列火柴的高度互不相同,两列火柴之间的距离定义为:∑i=1n(ai−bi)2∑i=1n(ai−bi)2,其中 aiai 表示第一列火柴中第 i 个火柴的高度,bibi 表示第二列火柴中第 i 个火柴的高度。

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

格式

输入格式

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

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

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

输出格式

输出共一行,包含一个整数,表示最少交换次数对 99,999,997 取模的结果

样例输入:

4
2 3 1 4
3 2 1 4 样例输出 1

注意:同一列火柴高度互不相同。

定理:冒泡排序的的交换次数为数列的逆序数。

#include <cstdio>
#include <algorithm>
using namespace std;
const int MAXN=;
const int MOD=;
struct Node{
int h,pos;
}a[MAXN],b[MAXN];
int n;
int bit[MAXN];
int c[MAXN];
bool comp(Node no1,Node no2)
{
return no1.h < no2.h;
}
void add(int i,int x)
{
while(i<MAXN)
{
bit[i]=(bit[i]+x)%MOD;
i+=(i&-i);
}
}
int sum(int i)
{
int s=;
while(i>)
{
s=(s+bit[i])%MOD;
i-=(i&-i);
}
return s;
}
int main()
{
scanf("%d",&n);
for(int i=;i<n;i++)
{
scanf("%d",&a[i].h);
a[i].pos=i+;
}
for(int i=;i<n;i++)
{
scanf("%d",&b[i].h);
b[i].pos=i+;
}
sort(a,a+n,comp);
sort(b,b+n,comp);
for(int i=;i<n;i++)
{
c[a[i].pos-]=b[i].pos;
}
int res=;
for(int i=;i<n;i++)
{
res=(res+i-sum(c[i]))%MOD;
add(c[i],);
}
printf("%d\n",res);
return ;
}

最新文章

  1. Mac上开启Web服务
  2. CentOS7下安装MySQL5.7安装与配置(转)
  3. MVC 伪静态
  4. View的onSaveInstanceState和onRestoreInstanceState过程分析
  5. BZOJ一天提交 51纪念(二)
  6. jdbc的封装
  7. cx_Oracle使用方法二
  8. 关于TXT转CHM的完整解决方式
  9. IIS注册.net框架及temp文件权限开放
  10. [LeetCode]题解(python):018-4Sum
  11. R语言︱文本(字符串)处理与正则表达式
  12. [BZOJ2752][HAOI2012]高速公路
  13. [SCOI2011] 糖果
  14. Redis这些知识点,是必须知道的!
  15. ActiveMQ简单介绍及安装
  16. 收获,不止oracle
  17. Spring Security实现RBAC权限管理
  18. Load Balancing OpenSSH SFTP with HAProxy
  19. 蓝桥杯历届试题 危险系数(dfs或者并查集求无向图关于两点的割点个数)
  20. Ubuntu下安装软件、卸载

热门文章

  1. POJ 3978(求素数)
  2. select中分割多组option
  3. PCIE、UART、I2C、SMBUS、SPI、eSPI、USB、PS2、CAN、SDIO等数据传输协议
  4. 关于global和$GLOBALS[]的一道经典面试题
  5. JSON和JSONP 傻傻分不清楚?
  6. spring 接收_header 作为get请求的httpheader
  7. C#高级编程七十五天----C#使用指针
  8. 编写灵活、稳定、高质量的 HTML 和 CSS 代码的规范。
  9. 20170319 ABAP 生成XML文件
  10. Python2.7使用virtualenv windows7