数据结构实验之排序五:归并求逆序数

Time Limit: 40MS Memory Limit: 65536KB

Problem Description

对于数列a1,a2,a3…中的任意两个数ai,aj (i < j),如果ai > aj,那么我们就说这两个数构成了一个逆序对;在一个数列中逆序对的总数称之为逆序数,如数列 1 6 3 7 2 4 9中,(6,4)是一个逆序对,同样还有(3,2),(7,4),(6,2),(6,3)等等,你的任务是对给定的数列求出数列的逆序数。

Input

输入数据N(N <= 100000)表示数列中元素的个数,随后输入N个正整数,数字间以空格间隔。

Output

输出逆序数。

Example Input

10
10 9 8 7 6 5 4 3 2 1

Example Output

45

DQE:

注意本题坑点!统计逆序数的变量必须要long int 或者long long int ,不然会溢出导致Wrang Anser!
逆序数即为 ( 每次归并时第二序列放置每个元素时第一序列剩余元素个数之和 ) 之和,参见代码内注释~
归并排序思想类似快排,代码逻辑简明易理解。
动态申请内存new确实比提前定义好数组直接使用耗时短,必要时用空间换时间!
 #include <iostream>
#include <cstdio>
using namespace std; int f[],n; //!0  //如下所述temp在这里一同定义
long int count; //注意本题坑点!计数变量用int会溢出导致Wrong Anser!long可AC,还不行的话就long long!!! void gb(int l,int r)
{
if(l>=r)
return ;
int m=(l+r)/;
gb(l,m); gb(m+,r);
//rec
int i=l,j=m+,*temp=new int[r-l+ +],k=;  //此处temp数组动态分配改为和f数组一起定义相同尺寸,用一倍的空间来去除动态内存分配的时间
while(i<=m&&j<=r)
{
if(f[i]<=f[j])
temp[k++]=f[i++];
else
temp[count+=m-i+,k++]=f[j++]; //归并时取第二序列每个元素时第一序列中剩余元素个数即为本次该元素的逆序数
}
while(i<=m)
temp[k++]=f[i++];
while(j<=r)
temp[k++]=f[j++];
k=;
while(l<=r)
f[l++]=temp[k++];
delete []temp;  //!
} int main()
{
while(scanf("%d",&n)!=EOF)
{
int i;
for(i=;i<=n;i++)
scanf("%d",f+i);
count =;
gb(,n);
// for(i=1;i<=n;i++)
// printf("%d ",f[i]);
printf("%ld\n",count); //增加int长度时记得这里对应修改l个数!!!
}
return ;
} /***************************************************
User name: ***
Result: Accepted
Take time: 32ms
Take Memory: 1336KB
Submit time: 2016-12-09 19:21:49
****************************************************/

SDUT 3402 数据结构实验之排序五:归并求逆序数的更多相关文章

  1. SDUT-3402_数据结构实验之排序五:归并求逆序数

    数据结构实验之排序五:归并求逆序数 Time Limit: 50 ms Memory Limit: 65536 KiB Problem Description 对于数列a1,a2,a3-中的任意两个数 ...

  2. SDUT 3401 数据结构实验之排序四:寻找大富翁.!

    数据结构实验之排序四:寻找大富翁 Time Limit: 150MS Memory Limit: 512KB Submit Statistic Problem Description 2015胡润全球 ...

  3. SDUT 3344 数据结构实验之二叉树五:层序遍历

    数据结构实验之二叉树五:层序遍历 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 已知一个按 ...

  4. SDUT OJ 数据结构实验之图论五:从起始点到目标点的最短步数(BFS)

    数据结构实验之图论五:从起始点到目标点的最短步数(BFS) Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss P ...

  5. SDUT OJ 数据结构实验之二叉树五:层序遍历

    数据结构实验之二叉树五:层序遍历 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descri ...

  6. SDUT OJ 数据结构实验之排序四:寻找大富翁

    数据结构实验之排序四:寻找大富翁 Time Limit: 200 ms Memory Limit: 512 KiB Submit Statistic Discuss Problem Descripti ...

  7. SDUT OJ 数据结构实验之排序三:bucket sort

    数据结构实验之排序三:bucket sort Time Limit: 250 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem D ...

  8. SDUT OJ 数据结构实验之排序二:交换排序

    数据结构实验之排序二:交换排序 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...

  9. SDUT OJ 数据结构实验之排序一:一趟快排

    数据结构实验之排序一:一趟快排 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...

随机推荐

  1. uva11806(容斥原理)

    11806 - Cheerleaders Time limit: 2.000 seconds In most professional sporting events, cheerleaders pl ...

  2. OSI七层与TCP/IP五层网络架构

    OSI七层模型   OSI中的层 功能 TCP/IP协议族 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 表示层 数据格式化,代 ...

  3. UVA - 11916 Emoogle Grid (组合计数+离散对数)

    假如有这样一道题目:要给一个M行N列的网格涂上K种颜色,其中有B个格子不用涂色,其他每个格子涂一种颜色,同一列中的上下两个相邻格子不能涂相同颜色.给出M,N,K和B个格子的位置,求出涂色方案总数除以1 ...

  4. Broken Keyboard(模拟数组或者双重链表的运用)

    这题我是大写的服气,辛辛苦苦搞了个双重链表结果还一直不对,不对就算了,书上源代码打进去还是不对,我能怎么办我也很无奈.不过这题还是让我对双重链表更加了解和运用了!还是可以的! You’re typin ...

  5. [SPOJ10707]Count on a tree II

    luogu 题意 给定一个n个节点的树,每个节点表示一个整数,问u到v的路径上有多少个不同的整数. sol 也就是路径数颜色.树上莫队板子题. 我这种分块的姿势貌似是假的. 所以跑的是最慢的QAQ. ...

  6. [HDU5324]Boring Class

    vjudge sol 字典序最小可以通过倒着\(dp\)解决.对每个\(i\)记录它可以转移到的\(dp\)值最大且字典序最小的\(nxt_i\). 尝试着写一下\(dp\)式子. \[dp_i=ma ...

  7. Python函数-bytearray()

    bytearray([source [, encoding [, errors]]]) bytearray([source [, encoding [, errors]]])返回一个byte数组.By ...

  8. 7.Selenium+Python实现搜索百度的测试用例

    1.导入测试用例需要的模块,unittest是python的内置模块,它提供了组织测试用例的框架 import unittest # 导入测试用例的模块 2.测试用例继承于unittest class ...

  9. 一行删除所有docker container的命令

    ns=`docker | awk '//{print $1}'`;for n in $ns;do docker rm -f $n;done docker | awk '{print $1}'|xarg ...

  10. rtsp/rtp over http

    转载:http://linux-expert.blog.163.com/blog/static/764585292008530912712/ rtsp/rtp over http C->S (g ...