洛谷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 这题其实主要难在想方法吧我觉得?学长提点了下说用贪心之后就大概明白了,感觉没有很难 但是离散化这里还是挺有趣的,因为并不是能很熟练地掌握离 ...
随机推荐
- Java+selenium+feeder+AutoIt+自动加载插件
package dataproject.datapro; import static org.testng.Assert.assertEqualsNoOrder; import java.io.Fil ...
- JUC原子类--01
JUC原子操作类分为四种类型 1. 基本类型: AtomicInteger, AtomicLong, AtomicBoolean ;2. 数组类型: AtomicIntegerArray, Atomi ...
- webstrom
1.webstrom如何在左边显示多个工程 File-> Settings -> Directories -> Add Content Root,选择你要加入的Project 点击O ...
- ArcGIS发布地图服务时报错Error: ArcGIS Server site is currently being configured by another administrative operation. Please try again later.
2017-06-06试图发布ArcGIS Server站点托管的服务时,返回以下错误消息: ERROR: Service 'test'.'MapServer' in folder '/' is cur ...
- 微信小程序分享及信息追踪
我就是个搬用工—来源:https://www.jianshu.com/p/87a75ec2fd53 小程序分享群及信息追踪 需求 页面分享 小程序页面分享链接增加source参数,值为用户ID加密 ...
- android git 过滤.idea文件时不起作用。
在Terminal里面执行git命令行 git rm -r --cached .idea 在ignored files中配置.idea/ 文件. 最后.idea变黄就可以了.
- Asp.Net Core基于JWT认证的数据接口网关Demo
近日,应一位朋友的邀请写了个Asp.Net Core基于JWT认证的数据接口网关Demo.朋友自己开了个公司,接到的一个升级项目,客户要求用Aps.Net Core做数据网关服务且基于JWT认证实现对 ...
- GDAL——命令使用专题——gdalinfo命令
GDAL——命令使用专题——gdalinfo命令 前言 GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库.它利用 ...
- js中时间戳与日期格式的相互转换
1. 将时间戳转换成日期格式: function timestampToTime(timestamp) { var date = new Date(timestamp * 1000);//时间戳为10 ...
- React 的坑
MemoryRouter 会缓存组件,导致有时候 componentDidMount 不会执行