九度oj题目1348:数组中的逆序对
题目1348:数组中的逆序对
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:2572
解决:606
- 题目描述:
- 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。
- 输入:
-
每个测试案例包括两行:第一行包含一个整数n,表示数组中的元素个数。其中1 <= n <= 10^5。第二行包含n个整数,每个数组均为int类型。
- 输出:
- 对应每个测试案例,输出一个整数,表示数组中的逆序对的总数。
- 样例输入:
-
4
7 5 6 4
- 样例输出:
-
5
注意:数据的表示范围!!long long!!
#include <cstdio>
#include <cstring>
#include <string>
#include <queue>
#include <stack>
#include <iostream>
using namespace std;
int a[],b[];
long long num;
void merge(int s,int mid,int e){
int p=s,q=mid+,k=s;
while(p<=mid&&q<=e){
if(a[p]>a[q]){
num+=mid-p+;//attention //cout<<"p: "<<p<<" q: "<<q<<" "<<num<<endl; b[k++]=a[q++];
}
else{
b[k++]=a[p++];
}
} //cout<<mid<<endl; if(p>mid){
while(k<=e){
b[k++]=a[q++];
}
}
else{
while(k<=e){
b[k++]=a[p++];
}
}
int i;
for(i=s;i<=e;i++){
a[i]=b[i];
}
}
void mergesort(int s,int e){
if(s>=e)
return;//attention!!
int mid=(s+e)/; //cout<<mid<<endl; mergesort(s,mid); //cout<<mid<<endl; mergesort(mid+,e);
merge(s,mid,e);
}
int main(){
//freopen("D:\\INPUT.txt","r",stdin);
int n;
while(scanf("%d",&n)!=EOF){
int i=;
for(;i<n;i++){
scanf("%d",&a[i]);
//cout<<a[i]<<endl;
}
num=; //cout<<n<<endl; mergesort(,n-);
printf("%lld\n",num);
}
return ;
}
九度oj题目1348:数组中的逆序对的更多相关文章
- 剑指Offer - 九度1348 - 数组中的逆序对
剑指Offer - 九度1348 - 数组中的逆序对2014-01-30 23:19 题目描述: 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个 ...
- 九度oj 题目1348:数组中的逆序对
题目描述: 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. 输入: 每个测试案例包括两行: 第一行包含一个整数n,表示数组 ...
- 九度OJ 1348 数组中的逆序对 -- 归并排序
题目地址:http://ac.jobdu.com/problem.php?pid=1348 题目描述: 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求 ...
- 九度oj 1348 数组中的逆序对
原题链接:http://ac.jobdu.com/problem.php?pid=1348 归并排序求逆序对... #include<algorithm> #include<iost ...
- 九度OJ 1351:数组中只出现一次的数字 (位运算)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3098 解决:906 题目描述: 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 输入: 每个 ...
- 【剑指offer】题目36 数组中的逆序对
数组中任取两个数字,如果前面的数字大于后面的数字称为一个逆序对 如:1,2,1,2,1 有3个逆序对 思路:知道O(N2)肯定是错的.开始想hash,试图找到O(n)的算法,想了很久,找不到.后来想到 ...
- [jobdu]数组中的逆序对
http://ac.jobdu.com/problem.php?pid=1348 数组中的逆序对也是个常见的题目,算法导论中也有一些描述,参考:http://www.cnblogs.com/wuyue ...
- 【剑指Offer面试编程题】题目1348:数组中的逆序对--九度OJ
题目描述: 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. 输入: 每个测试案例包括两行: 第一行包含一个整数n,表示数组 ...
- 九度OJ 题目1384:二维数组中的查找
/********************************* * 日期:2013-10-11 * 作者:SJF0115 * 题号: 九度OJ 题目1384:二维数组中的查找 * 来源:http ...
随机推荐
- java 列表与集合总结
列表与集合 (一切输出都用for each!丢弃迭代器) 列表List 1 顺序表 Arraylist 适用于静态查找2 链式双向表 Linkedlist 适用于增删该查3 (容器) Vecto ...
- ant实例
<?xml version="1.0" encoding="UTF-8" ?> <project name="javaTest&qu ...
- 条目十《了解分配子(allocator)的约定和限制》
条目十<了解分配子(allocator)的约定和限制> 在STL标准库中,分配子的存在有点怪异. 一开始的设计意图是提供一个内存模型的抽象,让使用库者库忽略操作系统的near指针和far指 ...
- Centos7服务器启动jar包项目最佳方式
jar后台运行:nohup java -jar xx.jar >/dev/null & 此处的“>/dev/null”作用是将终端输出信息输出到空洞中,即不保存输出信息,若要查看输 ...
- 安装jdk环境
1.jdk安装包准备: 下载链接:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html ...
- (转)Delphi7中QuickReport组件(QReport报表)安装方法及重要属性
Delphi7中没有办法直接使用QuickReport组件,因为在Delphi7中没有将QuickReport组件包作为默认组件打包,如果要使用此组件,需要先安装一下. 打开delphi7,点 ...
- spring配置文件中导入约束的详细步骤
这里先以<beans>元素为例: 首先在eclipse中引入相关约束: 点击OK后,这个约束就被引入到eclipse中了,这一步的意义在于:就算你处于脱机情况下(不能联网),也能给你提示. ...
- 栈 - 20 Valid Parentheses, 150 Evaluate Reverse Polish Notation
class Solution { public: bool isValid(string s) { stack<char> st; ; i<s.size(); i++){ if(s[ ...
- HDU - 3336 next运用+递推
题目的匹配应该也要看成一个文本串与另一个模式串的匹配过程 Text是以当前i结尾的后缀来匹配Pattern的前缀(非真) 这里的Pattern肯定是可以匹配成功的,直接由next来保证(next总是当 ...
- ACM 计算几何向量
向量 简介注意事项基本计算 加减法 ~ 示例代码 长度 ~ 示例代码 数乘 ~ 示例代码 点积 应用 ~ 示例代码 叉积 ~ 示例代码 性质与应用 经典题目 向量旋转 操作目的 模板代码 简介 向量, ...