[NOIP2013T2]火柴排队

背景

noip2013day1

描述

涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度。 现在将每盒中的火柴各

自 排成一列, 同一列火柴的高度互不相同, 两列火柴之间的距离定义为:∑(ai-bi)2,

其中 ai 表示第一列火柴中第 i 个火柴的高度, bi 表示第二列火柴中第 i 个火柴的高度。

每列火柴中相邻两根火柴的位置都可以交换,请你通过交换使得两列火柴之间的距离最

小。请问得到这个最小的距离,最少需要交换多少次? 如果这个数字太大,请输出这个最

小交换次数对 99,999,997 取模的结果。

输入格式

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

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

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

输出格式

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

测试样例1

输入

4

2 3 1 4

3 2 1 4

输出

1

备注

对于 10%的数据, 1 ≤ n ≤ 10;

对于 30%的数据, 1 ≤ n ≤ 100;

对于 60%的数据, 1 ≤ n ≤ 1,000;

对于 100%的数据, 1 ≤ n ≤ 100,000, 0 ≤火柴高度≤ 231 − 1。







这里给出的是树状数组实现的求逆序对。。。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define mod 99999997
using namespace std;
inline 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,ans;
int t[100005],rank[100005];
struct data{int v,num;}a[100005],b[100005];
inline bool cmp1(data a,data b)
{return a.v<b.v;}
inline int lowbit(int x){return x&(-x);}
inline int ask(int x)
{
int tmp=0;
for(int i=x;i;i-=lowbit(i))
tmp+=t[i];
return tmp;
}
void update(int x)
{
for(int i=x;i<=n;i+=lowbit(i))
t[i]++;
}
int main()
{
n=read();
for(int i=1;i<=n;i++)
{a[i].v=read();a[i].num=i;}
for(int i=1;i<=n;i++)
{b[i].v=read();b[i].num=i;}
sort(a+1,a+n+1,cmp1);
sort(b+1,b+n+1,cmp1);
for(int i=1;i<=n;i++)
rank[a[i].num]=b[i].num;
for(int i=1;i<=n;i++)
{
update(rank[i]);
ans=(ans+i-ask(rank[i]))%mod;
}
printf("%d",ans);
return 0;
}

最新文章

  1. OC基础--对象做参数在方法间传递
  2. DirectX.Capture Class Library
  3. CodeForces 688E-The Values You Can Make
  4. Microsoft Visual Studio 2010 VSTS单元测试指南
  5. csuoj 1395: Timebomb
  6. 关于java设计模式与极品飞车游戏的思考
  7. C++基类和派生类之间的转换
  8. 打包jar类库与使用jar类库
  9. JVM可支持的最大线程数(转)
  10. org.apache.lucene.queryParser.ParseException: Encountered &quot;&lt;EOF&gt;&quot; at line 1, column 0.
  11. 【物联网云端对接-2】通过MQTT协议与阿里云物联网套件进行云端通信
  12. 【转】MySQL分库分表环境下全局ID生成方案
  13. ABAP 开启制定路径下的文件或网址URL
  14. Pat1108: Finding Average
  15. 如何把if-else代码重构成高质量代码
  16. Rdlc 参数问题
  17. python3 Beautifulsoup &lt;class &#39;bs4.element.ResultSet&#39;&gt; &lt;class &#39;bs4.element.Tag&#39;&gt; 取值
  18. 详细解读Volley(三)—— ImageLoader &amp; NetworkImageView
  19. oracle_jdbc_Query
  20. ListView性能优化——convertView&viewHolder

热门文章

  1. [Intermediate Algorithm] - Steamroller
  2. Swift Method Dispatching — a summary of my talk at Swift Warsaw
  3. Memcached 之取模与哈希算法命中率实验
  4. apicloud UISearchBar 使用方法
  5. 在centos 配置python django环境 总结
  6. linux中tomcat启动脚本:关闭、发布、重启、测试是否成功
  7. BZOJ4756 [USACO17JAN]Promotion Counting晋升者计数
  8. python-selenium,关于页面滑动
  9. Linux—Ubuntu14.0.5设置MySQL的字符集
  10. Orcale用户管理