正解:

贪心+离散化+逆序对

解题报告:

链接在这儿呢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. Java知多少(1) 语言概述

    Java语言是SUN(Stanford University Network,斯坦福大学网络公司)公司1995年推出的一门高级编程语言,起初主要应用在小型消费电子产品上,后来随着互联网的兴起,Java ...

  2. vue返回上一页面如果没有上一页面返回首页

    methods: { back(){ if (window.history.length <= 1) { this.$router.push({path:'/'}) return false } ...

  3. linux 环境变量字符串的优先顺序

    /data/miniconda3dir/envs/mtfy/bin:$PATH 和$PATH:/data/miniconda3dir/envs/mtfy/bin 区别是非常大. 在linux中不同环境 ...

  4. js中的try/catch

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. MapReduce处理HBase出错:XXX.jar is not a valid DFS filename

    原因:Hadoop文件系统没有检查路径时没有区分是本地windows系统还是Hadoop集群文件系统 解决:  只需将Map和Reduce的init方法最后一个参数(boolean addDepend ...

  6. cocos2dx内存管理

    cocos2dx基于引用计数管理内存,所有继承自CCObject的对象都将获得引用计数的能力,可通过调用retain成员函数用于引用计数值,调用release减少引用计数值,当计数值减为0时销毁对象. ...

  7. ASP.NET MVC文章系列

    Summary of article list for ASP.NET MVC [Basic] Pro ASP.NET MVC chapter 2 http://www.cnblogs.com/yan ...

  8. 美团店铺评价语言处理以及分类(tfidf,SVM,决策树,随机森林,Knn,ensemble)

    第一篇 数据清洗与分析部分 第二篇 可视化部分, 第三篇 朴素贝叶斯文本分类 支持向量机分类 支持向量机 网格搜索 临近法 决策树 随机森林 bagging方法 import pandas as pd ...

  9. D - Lake Counting

    Due to recent rains, water has pooled in various places in Farmer John's field, which is represented ...

  10. solus 系统 - 更新软件源

    清华稳定源sudo eopkg ar Tuna https://mirrors.tuna.tsinghua.edu.cn/solus/shannon/eopkg-index.xml 清华不稳定源sud ...