正解:

贪心+离散化+逆序对

解题报告:

链接在这儿呢quq

这题其实主要难在想方法吧我觉得?学长提点了下说用贪心之后就大概明白了,感觉没有很难

但是离散化这里还是挺有趣的,因为并不是能很熟练地掌握离散化(昂其实理解得还不错……主要实现太少TT)

所以在这里放一下

 #include<bits/stdc++.h>
 using namespace std;
 struct str
 {
     long long hei,id;
 }mat1[],mat2[];
 ],g[],p[],ans;
 long long read()
 {
     ,y=;
     ') && ch!='-')ch=getchar();
     ,ch=getchar();
     )+(x<<)+(ch^'),ch=getchar();
     return x*y;
 }
 bool cmp(str x,str y)
 {
     return x.hei<y.hei;
 }
 void gbpx(long long l,long long r)
 {
     ,j=m+;
     if(l==r)return;
     gbpx(l,m);
     gbpx(m+,r);
     while(i<=m && j<=r)
     {
         if(g[i]<=g[j])
         {
             p[k]=g[i];
             i++;
             k++;
         }
         else
         {
             p[k]=g[j];
             j++;
             k++;
             ans=(ans+m-i)+%;
         }
     }
     while(i<=m)
     {
         p[k]=g[i];
         i++;
         k++;
     }
     while(j<=r)
     {
         p[k]=g[j];
         j++;
         k++;
     }
     for(i=l;i<=r;i++)g[i]=p[i];
     return;
 }
 int main()
 {
     long long n=read();
     ;i<=n;i++)mat1[i].hei=read(),mat1[i].id=i;
     sort(mat1+,mat1+n+,cmp);
     ;i<=n;i++)f[mat1[i].hei]=mat1[i].id;
     ;i<=n;i++)mat2[i].hei=read(),mat2[i].id=i;
     sort(mat2+,mat2+n+,cmp);
     ;i<=n;i++)g[mat2[i].id]=f[i];
     gbpx(,n);
     printf();
     ;
 }

然后显然逆序对也可以树状数组打,懒得打辣,太基础辣w

毕竟这题主要难在思想而不是实现鸭QwQ

洛谷P1966 火柴排队 贪心+离散化+逆序对(待补充QAQ的更多相关文章

  1. $Noip2013/Luogu1966$ 火柴排队 贪心+离散化+逆序对

    $Luogu$ $Description$ 给定等长的$a,b$两个序列.每次可以交换一个序列中相邻两个数.求最小的交换次数使得$\sum(a_i-b_i)^2$最小. $Sol$ 交换后的序列一定满 ...

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

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

  3. 洛谷——P1966 火柴排队&&P1774 最接近神的人_NOI导刊2010提高(02)

    P1966 火柴排队 这题贪心显然,即将两序列中第k大的数的位置保持一致,证明略: 树状数组求逆序对啦 浅谈树状数组求逆序对及离散化的几种方式及应用 方法:从前向后每次将数插入到bit(树状数组)中, ...

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

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

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

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

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

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

  7. NOIP 2013 洛谷P1966 火柴排队 (树状数组求逆序对)

    对于a[],b[]两个数组,我们应选取其中一个为基准,再运用树状数组求逆序对的方法就行了. 大佬博客:https://www.cnblogs.com/luckyblock/p/11482130.htm ...

  8. [洛谷P1966] 火柴排队

    题目链接: 火柴排队 题目分析: 感觉比较顺理成章地就能推出来?似乎是个一眼题 交换的话多半会往逆序对上面想,然后题目给那个式子就是拿来吓人的根本没有卵用 唯一的用处大概是告诉你考虑贪心一波,很显然有 ...

  9. 洛谷 P1966 火柴排队

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

随机推荐

  1. Cisco DHCP Snooping + IPSG 功能实现

    什么是DHCP? DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,前身是BOOTP协议, 使用UDP协议工作,常用的2个端口 ...

  2. 编写具有临时root权限的应用

    本文以dpkg为例进行演示 关于setuid具体原理可查阅<Unix高级环境编程>“进程控制”章节关于“设置用户id和设置组id”的介绍 1. 首先需要通过setuid(0),让程序获取临 ...

  3. [Linux] 硬盘构造与分区

    首先让我们从物理结构上了解一下硬盘的存储原理. 硬盘构造示意图: 1. head:磁头,磁盘盘面上的磁头,有几个磁头,就有几个盘面.从0开始编号,最大255,表示总共256个磁头. 2. cylind ...

  4. VS2017 配置freeglut3.0.0

    配置freeglut: 1. 先下载cmake和freeglut3.0.0文件,并使用cmake编译freeglut,再使用vs2017生成解决方案,详细步骤见https://blog.csdn.ne ...

  5. HRMS文件解析2

    returntablefieldColorFilterGray()函数在/lib/select_menu.php文件中,函数如下: function returntablefieldColorFilt ...

  6. C# Hashtable

    哈希表(Hashtable) 在.NET Framework中,Hashtable 是 System.Collections 命名空间提供的一个容器,用于处理和表现类似 key-value 的键值对, ...

  7. QT 获取电脑时间

    使用环境: VS2010 & QT Designer5 #include <QDateTime>  //包含头文件 QDateTime local(QDateTime::curre ...

  8. 专访姚冬:All-in-One,智能时代下企业需要更快速的变革

    2017年,msup将咨询服务列入公司发展战略目标,并邀请前IBM大中华区技术总监姚冬成为咨询合伙人.近一年来,msup在咨询服务方面持续发力,与包括百度.平安科技.用友等在内的大型公司形成企业合作联 ...

  9. vim与程序员 vi/vim 的使用

    vim与程序员   所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在. 但是目前我们使用比较多的是 vim 编辑器. vim 具有程序编辑的能力,可以主动的以 ...

  10. web标准 浏览器介绍 开发工具介绍 HTML介绍 HTML颜色介绍 规范 HTML结构详解 {前端之前端初识}

    前端之前端初识   前端初识 本节目录 一 web标准 二 浏览器介绍 三 开发工具介绍 四 HTML介绍 五 HTML颜色介绍 六 规范 七 HTML结构详解 一 web标准 web准备介绍: 1. ...