洛谷P1966 【火柴排队】
题解 P1966 【火柴排队】
说明:
在数学中有个公式:
(a1-b1)^2+(a2-b2)^2<(a2-b1)^2+(a1-b2)^2
(你可以自己试着证一下)
两列火柴对应的两根火柴在各列中高度的排序应该相同
再申请一个r数组,使得r[a[i].num]=b[i].num
然后,显而易见,本题得解。
温馨提示:代码有防抄袭系统,小心抄袭掉坑里。
#include <cstdio>
#include <algorithm>反抄袭系统
using namespace std;
struct huochai
{
int h;
int num;
}a[100001],b[100001];
int n;
int read()
{
char ch=getchar();
while(ch<'0' || ch>'9')
{
ch=getchar();
}
int h=0;
while(ch<='9' && ch>='0')
{
h=h*10+ch-48;
ch=getchar();
}
return h;
}
int my(const huochai&a,const huochai&b)
{
if(a.h<b.h)
{
return 1;
}
else
{
return 0;
}
}
int c[100001],r[100001],tot=0;
void merge_sort(int left,int right)
{
if(left==right)反抄袭系统
{
return;
}
int mid=(right+left)/2,x=left,y=mid+1,t=left;
merge_sort(left,mid);
merge_sort(mid+1,right);
while(x<=mid&&y<=right)
{
if(r[x]>r[y])
{
tot=tot+mid-x+1;
tot=tot%99999997;
c[t++]=r[y++];
}
else
c[t++]=r[x++];
}
while(x<=mid)
{
c[t++]=r[x++];
}
while(y<=right)
{
c[t++]=r[y++];
}
for(int w=left;w<=right;w++)
{
r[w]=c[w];
}
}
int main()
{
n=read();反抄袭系统
for(int i=1;i<=n;i++)
{
a[i].h=read();
}
for(int i=1;i<=n;i++)
{
a[i].num=i;
}
for(int i=1;i<=n;i++)
{
b[i].h=read();
}
for(int i=1;i<=n;i++)
{
b[i].num=i;
}
sort(a+1,a+n+1,my);
sort(b+1,b+n+1,my);
for(int i=1;i<=n;i++)
{
r[a[i].num]=b[i].num;
}
merge_sort(1,n); 反抄袭系统
printf("%d",tot);
return 0;
}
洛谷P1966 【火柴排队】的更多相关文章
- [NOIP2013提高&洛谷P1966]火柴排队 题解(树状数组求逆序对)
[NOIP2013提高&洛谷P1966]火柴排队 Description 涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度. 现在将每盒中的火柴各自排成一列, 同一列火柴的高度互不相 ...
- 【刷题】洛谷 P1966 火柴排队
题目描述 涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度. 现在将每盒中的火柴各自排成一列, 同一列火柴的高度互不相同, 两列火柴之间的距离定义为: ∑(ai-bi)^2 其中 ai 表示 ...
- 洛谷 P1966 火柴排队 解题报告
P1966 火柴排队 题目描述 涵涵有两盒火柴,每盒装有 \(n\) 根火柴,每根火柴都有一个高度. 现在将每盒中的火柴各自排成一列, 同一列火柴的高度互不相同, 两列火柴之间的距离定义为: \(\s ...
- 洛谷——P1966 火柴排队&&P1774 最接近神的人_NOI导刊2010提高(02)
P1966 火柴排队 这题贪心显然,即将两序列中第k大的数的位置保持一致,证明略: 树状数组求逆序对啦 浅谈树状数组求逆序对及离散化的几种方式及应用 方法:从前向后每次将数插入到bit(树状数组)中, ...
- [洛谷P1966] 火柴排队
题目链接: 火柴排队 题目分析: 感觉比较顺理成章地就能推出来?似乎是个一眼题 交换的话多半会往逆序对上面想,然后题目给那个式子就是拿来吓人的根本没有卵用 唯一的用处大概是告诉你考虑贪心一波,很显然有 ...
- 洛谷 P1966 火柴排队
题目描述 涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度. 现在将每盒中的火柴各自排成一列, 同一列火柴的高度互不相同, 两列火柴之间的距离定义为:∑(ai−bi)2 其中ai 表示 ...
- 洛谷 P1966 火柴排队 —— 思路
题目:https://www.luogu.org/problemnew/show/P1966 首先,一个排列相邻交换变成另一个排列的交换次数就是逆序对数: 随便画一画,感觉应该是排个序,大的对应大的, ...
- 洛谷——P1966 火柴排队
https://www.luogu.org/problem/show?pid=1966 题目描述 涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度. 现在将每盒中的火柴各自排成一列, 同一列 ...
- 洛谷p1966 火柴排队 (逆序对变形,目标排序
题目描述 涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度. 现在将每盒中的火柴各自排成一列, 同一列火柴的高度互不相同, 两列火柴之间的距离定义为: ∑(ai-bi)^2 其中 ai 表示 ...
- 洛谷P1966 火柴排队 贪心+离散化+逆序对(待补充QAQ
正解: 贪心+离散化+逆序对 解题报告: 链接在这儿呢quq 这题其实主要难在想方法吧我觉得?学长提点了下说用贪心之后就大概明白了,感觉没有很难 但是离散化这里还是挺有趣的,因为并不是能很熟练地掌握离 ...
随机推荐
- js统一设置富文本中的图片宽度
var txt = layedit.getContent(ieditor);//获取编辑器内的文本var regex = new RegExp('<img', 'gi');txt = txt.r ...
- 『计算机视觉』Region Proposal by Guided Anchoring
论文地址:Guided Anchoring 不得不佩服自媒体,直接找到了论文作者之一写了篇解析文章,这里给出链接,本文将引用一部分原作者的解析,减少我的打字量,也方便结合比照理解. 一.问题和思路 1 ...
- python 数据分析基础
安装Python基础的几个数据分析库: pip install pandas pip install numpy pip install scipy pip install scikit-surpri ...
- github隐藏文件&删除文件
一.隐藏文件不提交至github 例如:需隐藏node_modules文件夹 1.找到.gitignore文件,一般这个是隐藏文件,需要显示隐藏文件 2.编辑.gitignore文件,加入下面这一句话 ...
- Docker和jenkins实现springboot自动部署
准备: 一个springboot项目.一台虚拟机(centos 7). 安装: linux安装docker 更新yum:yum update 下载docker: yum –y install dock ...
- Loadrunner11中webservice协议脚本总结
Loadrunner11中webservice协议脚本总结 简介 webservices协议是建立可交互操作的分布式应用程序的新平台,它通过一系列的标准和协议来保证程序之间的动态连接,其中最基 ...
- Java Design Pattern(Factory,Singleton,Prototype,Proxy)
一.Factory 设计模式: the most common pattern,create a new object ,eg. A a=new A();工厂模式的好处:工厂模式可以做到把创建对象单独 ...
- UIPath Level 2&3
Level 3 走了很多弯路,但是学到了很多东西,贴一个Level3的吧,其他的省略了 认认真真独立做完Level3的两个POC,相信你对UIPath的理解会更深入一步 晚安,祝各位中秋节快乐!
- WPF实现分页控件
页面代码如下: <UserControl x:Class="Music163.DataGridPaging" xmlns="http://schemas.micro ...
- MATLAB绘图hist
刚登上号,已经学了一半了,就从现在开始写吧 以前学过的东西老忘,所以就注册个账号就当做记笔记吧 MATLAB在原来的数组中增加新行 A=[A;B]%B是要增加的行: hist使用方法 y=4*rand ...