洛谷P1908 逆序对(归并排序)
时间:2022-05-08
本文章向大家介绍洛谷P1908 逆序对(归并排序),主要内容包括题目描述、输入输出格式、输入输出样例、说明、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
题目描述
猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计。最近,TOM老猫查阅到一个人类称之为“逆序对”的东西,这东西是这样定义的:对于给定的一段正整数序列,逆序对就是序列中ai>aj且i<j的有序对。知道这概念后,他们就比赛谁先算出给定的一段正整数序列中逆序对的数目。
输入输出格式
输入格式:
第一行,一个数n,表示序列中有n个数。
第二行n个数,表示给定的序列。
输出格式:
给定序列中逆序对的数目。
输入输出样例
输入样例#1:
6
5 4 2 6 3 1
输出样例#1:
11
说明
对于50%的数据,n≤2500
对于100%的数据,n≤40000。
1 #include<cstdio>
2 #include<iostream>
3 #include<cmath>
4 using namespace std;
5 const int MAXN=100001;
6 inline int read()
7 {
8 char c=getchar();int x=0,flag=1;
9 while(c<'0'||c>'9') {if(c=='-') flag=-1;c=getchar();}
10 while(c>='0'&&c<='9') x=x*10+c-48,c=getchar();return x*flag;
11 }
12 int n;
13 int a[MAXN];
14 int tmp[MAXN];
15 int ans=0;
16 void Sort(int l,int r)
17 {
18 if(l==r) return ;
19 int mid=l+r>>1;
20 Sort(l,mid);Sort(mid+1,r);
21 int nowl=l,nowr=mid+1,nowpos=l;
22 while(nowl<=mid&&nowr<=r)
23 {
24 if(a[nowl]<=a[nowr]) tmp[nowpos++]=a[nowl],nowl++;
25 else tmp[nowpos++]=a[nowr],nowr++,ans=ans+mid-nowl+1;
26 }
27 while(nowl<=mid) tmp[nowpos++]=a[nowl],nowl++;
28 while(nowr<=r) tmp[nowpos++]=a[nowr],nowr++;
29 for(int i=l;i<=r;i++) a[i]=tmp[i];
30 }
31 int main()
32 {
33 n=read();
34 for(int i=1;i<=n;i++) a[i]=read();
35 Sort(1,n);
36 printf("%d",ans);
37 return 0;
38 }
- Android新手之旅(7) RadioButton的自定义
- Flash/Flex学习笔记(4):如何打开网页及Get/Post数据
- Flash/Flex学习笔记(5):捕获摄像头(续)--在线抓屏并保存到客户端本地
- 分布式监控系统Zabbix--使用Grafana进行图形展示
- Silverlight在线创建PDF(支持中文)
- Flash/Flex学习笔记(3):动态添加组件
- Flash/Flex学习笔记(1):Hello World!
- 数据库常规操作
- 不伦不类的Action Script 3.0
- Asp.Net Mvc中的一些初级问题整理
- Pandas Series笔记
- Asp.Net4.0/VS2010新变化(6):内置的图表控件
- Asp.Net4.0/VS2010新变化(5):可扩展的(分布式)缓存
- Pandas对行情数据的预处理
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- C语言字符串指针
- Http:GET和POST请求的区别
- 十六进制数组转换成ASCII码
- 解决ModuleNotFoundError: No module named ‘pip’问题
- 【FreeRTos】队列管理1
- 【FreeRTOS】队列管理2
- ubuntu——Zbar 在linux/ubuntu下的安装编译
- ZBAR库
- 英文文本关系抽取(fine-tune Huggingface XLNet)
- Laravel 7.x 使用 keyspace notification 监听不到 Key 过期事件
- 嵌入式链接脚本(LINK SCRIPT)介绍
- zbar中的zbar_scan_image 函数
- PM2源码分析
- zbar库中的zbar_scan_y函数
- 快速学习-Nacos Config--服务配置