超车 OVERTAKING
发布日期:2022-02-05 18:27:27
浏览次数:11
分类:技术文章
本文共 1627 字,大约阅读时间需要 5 分钟。
【题目描述】
Jzabc对赛车也很感兴趣,在参观车展是,想到这样一个问题,在某时刻,他看到n辆车(总是匀速行驶)在同一直线上,且处于一个无限长的直道上,而且n辆车有严格的先后之分,。他通过特殊的器材测出了每辆车的速度,那么问题出现了,如果有车A和车B,A在B的后面,且A的速度快于B的,那么经过一段时间后,A一定会超过B,我们称之为一次超车。那么他想请你帮忙计算超车总数。我们记车道起点的坐标为0 ,没有两辆车的坐标相同。
【输入格式】
第一行,一个数N,表示车辆总数。以下n行为N辆车的信息;
第二行至第N+1行,每行有两个正整数X、Y,X和Y之间有一个空格,其中X为车的坐标,Y为车的速度。
0<=X,Y<=1000000000
【输出格式】
一行,超车总数
【输入样例】
2
5 6
2 8
【输出样例】
1
【数据规模】
对于20%的数据,满足N<=300
对于50%的数据,满足N<=3000
对于100%的数据,满足N<=300000
由于位置不同
按位置第一关键字排序后
找速度中的逆序对 即为超车数
因为路是无限长的
存在一组I,J使I位置在J左面 I速度大于J
I就一定会超过J
可以利用归并排序在NlogN时间内求出逆序对
第一次写归并= =
wa了好多次
加入找到t[h1]>t[h2]则需要加上mid-h1+1
因为l-mid已经归并好
t[h1]>t[h2] 则对于h1<=i<=mid t[i]>t[h2]
#include#include #include #include using namespace std;struct self{int x,y;}s[500033];int cmp(self a1,self a2){return a1.x >1; int h1=l,h2=mid+1,i=0; while(h1<=mid&&h2<=r) { if(t[h1]<=t[h2]) { i++; temp[i]=t[h1]; h1++; } else { z=z+(mid-h1+1); i++; temp[i]=t[h2]; h2++; } } while(h1<=mid) { i++; temp[i]=t[h1]; h1++; } while(h2<=r) { i++; temp[i]=t[h2]; h2++; } for(a=l;a<=r;a++)t[a]=temp[a-l+1];}void work(int l,int r){ if(l==r)return; int mid=(l+r)>>1; work(l,mid); work(mid+1,r); gui(l,r);} int main(){ freopen("overtaking.in","r",stdin);freopen("overtaking.out","w",stdout); scanf("%d",&m); for(a=1;a<=m;a++)scanf("%d%d",&s[a].x,&s[a].y); sort(s+1,s+m+1,cmp); for(a=1;a<=m;a++)t[a]=s[a].y; work(1,m); cout< <
转载地址:https://blog.csdn.net/li412302070/article/details/12848875 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年04月14日 18时27分49秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
信息抽取_CodingPark编程公园
2019-04-26
如何理解输入流输出流?_CodingPark编程公园
2019-04-26
Python类|实例|方法|继承_专题_CodingPark编程公园
2019-04-26
机器学习心得_CodingPark编程公园
2019-04-26
自然语言工程师心得概述_CodingPark编程公园
2019-04-26
for循环那点事儿_CodingPark编程公园
2019-04-26
Int -> List | List -> Int _ CodingPark编程公园
2019-04-26
如何在junit中使用SpringFramework的Ioc容器
2019-04-26
一个案例教你理解Spring面向切面编程(Spring Aop)
2019-04-26
手把手教你整合SSM框架
2019-04-26
自己造个简单数据校验的注解@Value和@Mail
2019-04-26
Poj百练 4148:生理周期 (分类:枚举)
2019-04-26
Java如何读写注册表
2019-04-26
java如何利用模板文件生成word文档
2019-04-26
java读写xlsx格式的MS Excel文件
2019-04-26
vue的一些基础知识点
2019-04-26
webpack错误记录(不定期更新)
2019-04-26
Poj百练 2692:假币问题 (分类:模拟)
2019-04-26
SpringBoot实现一个文件上传服务
2019-04-26
前后分但文件上传与多文件上传,前端实现
2019-04-26