题目:https://www.luogu.org/problemnew/show/P1966

首先,一个排列相邻交换变成另一个排列的交换次数就是逆序对数;

随便画一画,感觉应该是排个序,大的对应大的,小的对应小的差值最小,具体证明的话应该是分类讨论一下吧;

操作两个序列可以转化成操作一个序列,大小对应就行了;

差点被 rk[] , ps[] 什么的弄晕,还是因为懒不想写离散化...

总之1A还是蛮高兴的。

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
int const maxn=1e5+5,mod=99999997;
int n,psb[maxn],rkb[maxn],f[maxn],rka[maxn];
ll ans,a[maxn],b[maxn];
ll rd()
{ll ret=0,f=1; char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();}while(ch>='0'&&ch<='9')ret=ret*10+ch-'0',ch=getchar();return ret*f;
}
bool cmp1(int x,int y){return a[x]>a[y];}
bool cmp2(int x,int y){return b[x]>b[y];}
void add(int x){for(;x;x-=(x&-x))f[x]++;}
int query(int x){int ret=0; for(;x<=n;x+=(x&-x))ret+=f[x]; return ret;}
int main()
{n=rd();for(int i=1;i<=n;i++)a[i]=rd(),rka[i]=i;for(int i=1;i<=n;i++)b[i]=rd(),rkb[i]=i;sort(rka+1,rka+n+1,cmp1); sort(rkb+1,rkb+n+1,cmp2);//  for(int i=1;i<=n;i++)printf("rka[%d]=%d rkb[%d]=%d\n",i,rka[i],i,rkb[i]);for(int i=1;i<=n;i++)psb[rkb[i]]=i;for(int i=1;i<=n;i++){int ps=rka[psb[i]];ans=(ans+query(ps))%mod;add(ps);}printf("%lld\n",ans);return 0;
}

转载于:https://www.cnblogs.com/Zinn/p/9647052.html

洛谷 P1966 火柴排队 —— 思路相关推荐

  1. 洛谷P1966 火柴排队

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

  2. 洛谷P1966 火柴排队(cdq分治 + 逆序对)

    2020.6.8 练二分了当然要练练分治,这些基础的处理手段真的还是蛮好用的. 这道题是问ai 和bi的平方和最小,最少需要的相邻的交换次数.手动模拟了一下感觉没什么思路.但是后来注意到每次只能移动相 ...

  3. 洛谷 P1966 火柴排队【树状数组】

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

  4. 洛谷 P1966 火柴排队

    题意 给定2个等长序列a.b,要求通过交换使 \[\sum_{i=1}^{n}(a_i-b_i)^2\] 最小. 分析 看着这个式子,我突然想到了方差.很明显,方差反应数据的波动程度,所以让数据集中就 ...

  5. 洛谷P1966 火柴排队(逆序对)

    题意 题目链接 Sol 不算很难的一道题 首先要保证权值最小,不难想到一种贪心策略,即把两个序列中rank相同的数放到同一个位置 证明也比较trivial.假设\(A\)中有两个元素\(a, b\), ...

  6. NOIP2013 火柴排队 [洛谷P1966]

    NOIP2013 火柴排队 [洛谷P1966] 题目描述 涵涵有两盒火柴,每盒装有 \(n\) 根火柴,每根火柴都有一个高度. 现在将每盒中的火柴各自排成一列, 同一列火柴的高度互不相同, 两列火柴之 ...

  7. P1966 火柴排队题解

    P1966 火柴排队 题意:有两列火柴,各有各的高度,两两高度不同,每次只能交换相邻的数,问最少交换多少次,使得 ∑ ( a i − b i ) 2 \sum (a_i-b_i)^2 ∑(ai​−bi ...

  8. 洛谷 P1149 火柴棒等式(太suang络吧)

    题目描述 给你n根火柴棍,你可以拼出多少个形如"A+B=CA+B=C"的等式?等式中的AA.BB.CC是用火柴棍拼出的整数(若该数非零,则最高位不能是00).用火柴棍拼数字0-90 ...

  9. 洛谷日常刷题(洛谷官方题单 思路+详解)

    目录 前言 非官方题单的题 P1141 01迷宫 1-4 递推与递归 P1255 数楼梯 1002 [ NOIP 2002 普及组]过河卒 P1044 [NOIP2003 普及组] 栈 P1028 [ ...

最新文章

  1. C语言函数集(十八)
  2. ubuntu 下安装nginx
  3. 疯狂ios讲义之疯狂连连看游戏简介
  4. 0基础如何入门Python编程
  5. python整数类型提供了4种进制表示_关于整数类型的 4 种进制表示,哪个选项的描述是正确的?_学小易找答案...
  6. oracle pl/sql 包
  7. 请问android直接post请求登录地址成功后,webview还是现实登录界面
  8. reg51.h和reg52.h头文件
  9. 我发现了一个价值8500美元的 HackerOne 平台漏洞
  10. 10 个 Python 初学者必知编码小技巧
  11. Android Service 的重启
  12. 手把手图文并茂教你用Android Studio编译FFmpeg库并移植
  13. APP测试—专项测试概念
  14. 如何解决注塑成型中的毛边问题?
  15. JZOJ 3337. 【NOI2013模拟】wyl8899的TLE
  16. php if相关标签,dedecms模板中运用dede标签时使用php和if判断语句的方法
  17. mysql 的几种缓存,数据库缓存几种方式 -解道Jdon
  18. 【burpsuite安全练兵场-服务端8】文件上传漏洞-7个实验(全)
  19. 天津铸源宝利缘系统成立仪式在津召开
  20. 比KEEP更好,运动健身、塑形瘦身的小程序新选择

热门文章

  1. IT兄弟连 JavaWeb教程 使用Servlet实现在页面中显示随机数
  2. python+ seleniumAPPium自动化 page Object 设计模式
  3. 模块使用:time、datetime、calendar、sys、os、os.path、normcase和normapath、random、json、pickle...
  4. Node.js与io.js那些事儿
  5. 转:SQL的内连接与外连接
  6. Week2 Teamework from Z.XML 软件分析与用户需求调查(三)必应助手体验评测
  7. iOS学习之NSBundle介绍和使用
  8. 方法文件Matlab调用动态链接库
  9. apache配置文件httpd.conf部分参数说明
  10. RAID及LVM,iscsi