DAY 3 问题 B: 超车
来源:互联网 发布:sql linq lambda 编辑:程序博客网 时间:2024/05/17 06:47
问题 B: 超车
时间限制: 1 Sec 内存限制: 128 MB
提交: 26 解决: 4
[提交][状态]
题目描述
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
#include<cstdio> #include<algorithm> #include<cstring> #include <iostream> #define mo 100000000 #define int long long using namespace std; int n; struct NODE{ int x,v; }dmf[300005]; int t[300005]; int tem[300005]; inline bool cmp(NODE a,NODE b){ return a.x<b.x; } int ans=0; void gui(int l,int r){ int i=l; int mid=l+r>>1; int j=mid+1; int k=l; while(i<=mid&&j<=r){ if(t[i]>t[j]){ tem[k++]=t[j++]; ans+=mid-i+1; } else{ tem[k++]=t[i++]; } } while(i<=mid) tem[k++]=t[i++]; while(j<=r) tem[k++]=t[j++]; for(int i=l;i<=r;i++) t[i]=tem[i]; } void work(int l,int r){ if(l<r) { int mid=l+r>>1; work(l,mid); work(mid+1,r); gui(l,r); } } main(){ scanf("%lld",&n); for(int i=1;i<=n;i++){ scanf("%lld%lld",&dmf[i].x,&dmf[i].v); } sort(dmf+1,dmf+n+1,cmp); for(int i=1;i<=n;i++) t[i]=dmf[i].v; work(1,n); cout<<ans; return 0; }
这题没啥用,就是复习下逆序对hiahiahia
阅读全文
0 0
- DAY 3 问题 B: 超车
- 问题 B: Day of Week
- 超车!
- 超车
- 超车
- B. Flag Day
- 【codeforce】B. Flag Day
- 笑话 - 超车
- 超车 OVERTAKING
- 弯道超车
- 弯道超车
- B Have a Nice Day
- codeforces 357B Flag Day
- codeforces#357B. Flag Day
- Day-3
- day 3
- Day 3
- [Day 3]
- linux group user
- 新网银行笔试面试总结
- Hadoop-datanode无法正常启动
- 【Bootstrap框架】——组件(Component)
- Servlet url-pattern的匹配规则
- DAY 3 问题 B: 超车
- IDEA使用小技巧
- JDK 9新特性汇总
- php 启动警告
- GitHub——我愿意迷失在其中
- 群面
- bzoj 2751(快速幂+乘法原理)
- 社会网络中的影响力最大化问题
- 以空间换时间的排序(不发生交换的排序)