美文网首页
9201.Freda的越野跑

9201.Freda的越野跑

作者: ShellyWhen | 来源:发表于2017-11-25 12:26 被阅读0次

描述
Freda报名参加了学校的越野跑。越野跑共有N人参加,在一条笔直的道路上进行。这N个人在起点处站成一列,相邻两个人之间保持一定的间距。比赛开始后,这N个人同时沿着道路向相同的方向跑去。换句话说,这N个人可以看作x轴上的N个点,在比赛开始后,它们同时向x轴正方向移动。
假设越野跑的距离足够远,这N个人的速度各不相同且保持匀速运动,那么会有多少对参赛者之间发生“赶超”的事件呢?
输入
第一行1个整数N。
第二行为N 个非负整数,按从前到后的顺序给出每个人的跑步速度。
对于50%的数据,2<=N<=1000。
对于100%的数据,2<=N<=100000。
输出
一个整数,表示有多少对参赛者之间发生赶超事件。

分析:求数组的逆序数对个数;采用归并算法,分而治之,局部调整后的逆序对与原先的保持一致,因此在调整时计数即可。

#include<iostream>
#define N 100002
int a[N]={0},t[N]={0};
long long c=0;
void merge(int l,int m,int r){
    int i=l,j=m+1,k=l;
    while(i<=m&&j<=r)
        if(a[i]>a[j])
            t[k++]=a[i++];
        else {
            t[k++]=a[j++];
            c+=1+m-i;
        }
    while(i<=m)t[k++]=a[i++];
    while(j<=r)t[k++]=a[j++];
    for(i=l;i<=r;++i)a[i]=t[i];
}
void  divide(int l,int r){
    int m;
    if(r>l){
        m=(r+l)/2;
        divide(l,m);
        divide(m+1,r);
        merge(l,m,r);
    }
}
int main(){
    int n,i=0;
    std::cin>>n;
    while(i<n)std::cin>>a[i++];
    divide(0,n-1);
    std::cout<<c;
} 

相关文章

  • 9201.Freda的越野跑

    描述Freda报名参加了学校的越野跑。越野跑共有N人参加,在一条笔直的道路上进行。这N个人在起点处站成一列,相邻两...

  • 《镝木毅越野跑训练全书》

    日本UTMB大神、UTMF赛事总监的越野跑训练指导书,越野跑各方面都有所涉及。 越野跑将“游山”和“跑步”...

  • 金堂越野跑

    成都100+之30km越野跑,这是越野跑的开启篇,也许也是终结篇。 克服恐惧之后,除了坚持,就是不停步。越野跑,就...

  • 越野跑

    今天孙教练发话 来个越野跑 我与大宝参加 服从教练安排 我们出发了 跑过了湖畔 经过芦苇荡 大宝到后半部分跑不动了...

  • 人生首野:在泥泞中绽放光彩

    常听身边的跑友说,越野是路跑的最高境界,一旦接触了越野,便会对路跑嗤之以鼻。跑友们对越野这么高的评价让好奇心...

  • 【牛人大神】第六期:90后越野黑马——向付召

    跑跑界“黑马” 越野跑中的一颗“新星”、越野跑中的“黑马”等这些称号是媒体对越野跑选手向付召的评价。的确这是一位9...

  • 愿你奔涉百里,归来初心不变

    今天请了几个朋友聊一下越野百公里, 越野百公里:什么是越野,把这个概念搞清楚。越野俗称跑山,越野跑和跑步完全是两个...

  • V越野-介绍

    品牌名称:V越野 关于我们 V越野2014年率先进入中国越野跑市场,是中国北方越野跑训练营、赛事的开拓者。 至20...

  • 跑渣,你好。请问你为何要跑越野跑呢!

    我为何跑越野跑 我是刚子,非资深越野跑渣。 这可能是你看过我写的第一篇关于越野跑的牢骚文,但未见得不认真不诚恳不走...

  • 香港越野跑—大屿山越野跑徒步

    2018年7月28日周六,这天是三伏天的头伏。今天计划是东青师姐徐师兄一起去大屿山的越野跑,同行有校友肖肖,我们的...

网友评论

      本文标题:9201.Freda的越野跑

      本文链接:https://www.haomeiwen.com/subject/zcqcbxtx.html