信息奥赛一本通(1311:【例2.5】求逆序对)
1311:【例2.5】求逆序对
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 26125 通过数: 5883
【题目描述】
给定一个序列a1,a2,…,an,如果存在i<j 并且ai>aj,那么我们称之为逆序对,求逆序对的数目。
【输入】
第一行为n,表示序列长度,接下来的n行,第i+1行表示序列中的第i个数。
【输出】
所有逆序对总数。
【输入样例】
4
3
2
3
2
【输出样例】
3
【提示】
N≤10^5,Ai≤10^5。
#include <stdio.h>
#define N 100010
int a[N],r[N];
long long ans;
void msort(int s,int t)
{
int mid,i,j,k;
if(s==t) //如果只有一个数字则返回,无须排序
return;
mid=(s+t)/2;
msort(s,mid); //分解左序列
msort(mid+1,t); //分解右序列
i=s; //接下来合并
j=mid+1;
k=s;
while(i<=mid && j<=t)
{
if(a[i]<=a[j])
{
r[k]=a[i];
k++;
i++;
}
else
{
r[k]=a[j];
k++;
j++;
ans+=mid-i+1; //统计产生逆序对的数量
}
}
while(i<=mid) //复制左边子序列剩余
{
r[k]=a[i];
k++;
i++;
}
while(j<=t) //复制右边子序列剩余
{
r[k]=a[j];
k++;
j++;
}
for(i=s;i<=t;i++)
a[i]=r[i];
}
int main()
{
int i,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
msort(1,n);
printf("%lld\n",ans);
return 0;
}
http://ybt.ssoier.cn:8088/problem_show.php?pid=1311
信息奥赛一本通(1311:【例2.5】求逆序对)相关推荐
- 信息学奥赛一本通 1311:【例2.5】求逆序对 | 1237:求排列的逆序数 | OpenJudge NOI 2.4 7622:求排列的逆序数 | 洛谷 P1908 逆序对
[题目链接] ybt 1311:[例2.5]求逆序对 ybt 1237:求排列的逆序数 OpenJudge NOI 2.4 7622:求排列的逆序数 洛谷 P1908 逆序对 ybt 1311,123 ...
- 信息学奥赛一本通:1311:【例2.5】求逆序对
1311:[例2.5]求逆序对 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 43413 通过数: 10264 [题目描述] 给定一个序列a1,a2,-, ...
- 【算法•日更•第十二期】信息奥赛一本通1585:【例 1】Amount of Degrees题解
废话不多说,直接上题: 1585: [例 1]Amount of Degrees 时间限制: 1000 ms 内存限制: 524288 KB 提交数: 130 通过数: 68 ...
- 信息奥赛一本通 三角形最佳路径问题 (1288) 题解
信息奥赛一本通 三角形最佳路径问题 (1288) 题解 时间限制: 1000 ms 内存限制: 65536 KB 题目描述 如下所示的由正整数数字构成的三角形: 7 3 8 8 1 0 2 7 4 4 ...
- 信息奥赛一本通的递推练习
信息奥赛一本通的递推练习 递推与动态规划 1313:位数问题 1314:过河卒 1194:移动路线 1196:踩方格 递推与动态规划 递推解决的问题中满足最优化原理的也是属于动态规划范畴 1313:位 ...
- 1311:【例2.5】求逆序对
1311:[例2.5]求逆序对 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 32812 通过数: 7495 [题目描述] 给定一个序列a1,a2,-,a ...
- 求逆序对(信息学奥赛一本通-T1311)
[题目描述] 给定一个序列a1,a2,-,an,如果存在i<j并且ai>aj,那么我们称之为逆序对,求逆序对的数目. [输入] 第一行为n,表示序列长度,接下来的n行,第i+1行表示序列中 ...
- 信息竞赛进阶指南--归并排序求逆序对
// 归并排序求逆序对 void merge(int l, int mid, int r) {// 合并a[l~mid]与a[mid+1~r]// a是待排序数组, b是临时数组, cnt是逆序对个数 ...
- Tido 习题-二叉树-树状数组求逆序对
这里给大家提供一个全新的求逆序对的方法 是通过树状数组来实现的 题目描述 样例输入 Copy 5 2 3 1 5 4 样例输出 Copy 3 提示 #include<iostre ...
最新文章
- windows 导出 oracle,windows 环境下oracle导入导出
- SignalR学习笔记(三)Self-Host
- 数字信号处理的fpga实现_FPGA数字信号处理:通信类I/Q信号及产生
- 深入理解 Objective-C:方法缓存
- sqoop 使用心得(sqoop增量倒入)
- Thinkphp3.2整合微信支付
- python画图包-Python 绘图包 Matplotlib Pyplot 教程
- 《设计模式详解》结构型模式 - 适配器模式
- ubuntu编译运行xv6
- [比赛]2015/12/25BNU新生赛
- Python3入门机器学习经典算法与应用 第3章 Numpy中的比较和FancyIndexing
- Jmeter编码格式
- 机器学习之监督学习-分类模型K近邻(KNN)算法实现
- Caught FileNotFoundError in DataLoader worker process 0.
- 可以嵌入ppt的课堂点名器_异地授课+大屏直播,打造沉浸式线下多地互动智慧课堂...
- 1816. 截断句子【我亦无他唯手熟尔】
- 测试开发 | 接口测试之HTTP 协议讲解
- 高性能 MySQL实战
- 安全工程转计算机专业,2019安全工程专业就业前景和就业方向分析
- python 列表嵌套字典 添加修改删除_python 列表、字典、元组等增删改查