E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
Ultra-QuickSort
uva 10810 -
Ultra-QuickSort
题意为,给你一个序列,每次交换两个相邻的数使序列为递增的序列,求最小的交换次数。 首先我们可以看出。最少的交换次数肯定得用归并排序来求了。实际上归并排序的交换次数就是这个数组的逆序对个数,为什么呢?我们可以这样考虑:归并排序是将数列a[l,h]分成两半a[l,mid]和a[mid+1,h]分别进行归并排序,然后再将这两半合并起来。在合并的过程中(设la[j]时,在前半部分中比a[i]大的数都比a[
小小泽
·
2016-01-25 18:00
POJ
Ultra-QuickSort
题目网址:http://poj.org/problem?id=2299题目:Ultra-QuickSortTimeLimit:7000MSMemoryLimit:65536KTotalSubmissions:51104Accepted:18727DescriptionInthisproblem,youhavetoanalyzeaparticularsortingalgorithm.Thealgor
chedan666
·
2016-01-08 17:00
poj
归并排序-acm
poj2299
Ultra-QuickSort
Ultra-QuickSortTimeLimit: 7000MS MemoryLimit: 65536KTotalSubmissions: 50361 Accepted: 18458DescriptionInthisproblem,youhavetoanalyzeaparticularsortingalgorithm.Thealgorithmprocessesasequenceofndistinc
AaronGZK
·
2015-11-14 00:00
poj
poj 2299
Ultra-QuickSort
归并排序求解逆序对
http://poj.org/problem?id=2299 给定一个整数数列,相邻之间的数可以互换,求最少要多少次互换后得到一个升序数列。 本题说白了就是求解逆序对问题(关于逆序对请参考: http://baike.baidu.com/view/689576.htm),接下来便是用归并排序来解逆序对了。 #include <stdio.h> #include &l
·
2015-11-13 16:56
Quicksort
poj 2299
Ultra-QuickSort
http://poj.org/problem?id=2299 归并排序 代码: #include<iostream> #include<stdio.h> #include<string.h> #include<math.h> #include<algorithm> #include<vector> #inc
·
2015-11-13 12:08
Quicksort
【POJ】2299
Ultra-QuickSort
(逆序对)
http://poj.org/problem?id=2299 在两个元素相同的数列里,其中一个数列要移动到另一个数列相同元素相同的位置,那么要移动的次数就是这个数列关于另一个数列的逆序对数(hash后) 逆序对的求法我原来的博文有 http://www.cnblogs.com/iwtwiioi/p/3523120.html 用归并排序求逆序对,大的在前 左闭右开 #include &l
·
2015-11-13 11:24
Quicksort
POJ训练计划2299_Ultra-QuickSort(归并排序求逆序数)
Ultra-QuickSort
Time Limit: 7000MS Memory Limit: 65536K Total Submissions:
·
2015-11-13 04:32
Quicksort
pku2299
Ultra-QuickSort
题目意思是求一个序列的逆序数,朴素的做法时间复杂度是O(n^2),其中 n < 500,000 ,结果不用说肯定是超时的;于是思路转向了O(nlogn)的算法,换言之离不开二分、树型结构等方法 这里用到的是杨挺的PDF《树状数组和线段树》里提到的方法:巧妙地将问题转化成类似求RMQ的问题,然后通过树状树组解决 1,将序列离散化,即序列内第k小的元素变成k,注意到题目已说明序列内无相同元素;
·
2015-11-13 03:36
Quicksort
POJ 2299,
Ultra-QuickSort
Time Limit: 7000MS Memory Limit: 65536KTotal Submissions: 12873 Accepted: 4518 DescriptionIn this problem, you have to analyze a particular sorting algorithm. The algori
·
2015-11-13 01:02
Quicksort
Ultra-QuickSort
http://poj.org/problem?id=2299 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #define MAXN 500100 5 using namespace std; 6 long long A[MAXN],T[MAXN];
·
2015-11-12 23:51
Quicksort
POJ 2299
Ultra-QuickSort
题意描述的是求冒泡排序过程中交换的次数。如果用冒泡排序统计次数的话会超时 ,因为有这么一条性质,排序交换的次数等于逆序数之和,所以转化成求逆序数之和。用归并排序。 #include<stdio.h> #include<string.h> #include<stdlib.h> const int MAXN = 500050; int A[MA
·
2015-11-12 22:10
Quicksort
Poj 2299
Ultra-QuickSort
Problem地址:http://poj.org/problem?id=2299 这题题意:给一对序列,通过调换相邻元素位置的方法,将一组无序数据排序成递增有序数据。 这里有一个结论:通过调换相邻元素位置的方法,将一组无序数据排序成递增有序数据的最小调换次数为此组数据中逆序对的对数。这里不证明这个结论。 那么这题就变成求这组数据中逆序对的对数。 求逆序对的方
·
2015-11-12 19:30
Quicksort
用树状数组求逆序对数(poj2299)
Ultra-QuickSort
Time Limit: 7000MS Memory Limit: 65536K Total Submissions:
·
2015-11-12 15:50
树状数组
树状数组专题
Problem APOJ 2299
Ultra-QuickSort
Problem B POJ 2352 Stars Problem CPOJ 1195 Mobile
·
2015-11-12 11:13
树状数组
poj 2299
Ultra-QuickSort
(归并排序 树状数组)
题意 :交换相邻的两个数来排序 最少交换几次 思路: 题意可以转化成求 数列中存在几个逆序数 可以看作冒泡排序 但是复杂度过高 可以用归并排序 和离散化的树状数组来完成 (注意 n<=5000000 所以ans 要用 长整型 ) #include<cstdio> #include<cstring> #include<
·
2015-11-12 10:00
Quicksort
【POJ2266】【树状数组+离散化】
Ultra-QuickSort
Description In this problem, you have to analyze a particular sorting algorithm. The algorithm processes a sequence of n distinct integers by swapping two adjacent sequence elements until the sequenc
·
2015-11-11 19:49
Quicksort
poj-----Ultra-QuickSort(离散化+树状数组)
Ultra-QuickSort
Time Limit: 7000MS Memory Limit: 65536K Total Submissions:
·
2015-11-11 19:42
Quicksort
逆序数 POJ 2299
Ultra-QuickSort
题目传送门 1 /* 2 题意:就是要求冒泡排序的交换次数。 3 逆序数:在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。 4 一个排列中逆序的总数就称为这个排列的逆序数。逆序数为偶数的排列称为偶排列;逆序数为奇数的排列称为奇排列。 5 如2431中,21,43,41,31是逆序,逆序数是4,为偶排列。也是就
·
2015-11-11 18:06
Quicksort
Ultra-QuickSort
(归并排序求逆序对数)
Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 34283 Accepted: 12295 Description In this problem, you have to analyze a particular sorting algo
·
2015-11-11 17:44
Quicksort
poj 2299
Ultra-QuickSort
归并排序模版: 1 #include<stdio.h> 2 3 long long int ans, n; 4 long long int a[501000], b[501000]; 5 6 void mergesort(int start, int end) 7 { 8 if(start < end) 9 { 10
·
2015-11-11 17:42
Quicksort
POJ 2299
Ultra-QuickSort
(树状数组)
题目链接 说着这个题难吧,代码真的是非常裸,说简单吧,自己想了好几天,都没想出如何用树状数组。以前见过用hash的方式映射的,为什么就没想到呢。。。 1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 #define N 500001 5 int p[N],
·
2015-11-11 15:47
Quicksort
poj 2229
Ultra-QuickSort
(树状数组求逆序数)
题目链接:http://poj.org/problem?id=2299 题目大意:给定n个数,要求这些数构成的逆序对的个数。 可以采用归并排序,也可以使用树状数组 可以把数一个个插入到树状数组中, 每插入一个数, 统计比他小的数的个数,对应的逆序为 i- getsum( data[i] ),其中 i 为当前已经插入的数的个数, getsum( data[i] )为比 data[i] 小的数的
·
2015-11-11 13:18
Quicksort
POJ 2299
Ultra-QuickSort
题目的意思很明确,就是求逆序对,于是直接在归并排序里加上ans+=mid-i+1求解即可 代码如下: #include <iostream> #define MAXN 500003 using namespace std; int N; long long ans; int a[MAXN] , t[MAXN]; void merge(int
·
2015-11-11 12:04
Quicksort
POJ -
Ultra-QuickSort
题目大意 给定N个数(没有相同的值),对N个数进行升序排序,每次只能交换相邻的两个数,问最少需要多少次交换才能够让N个数成为升序排列的 题解 就是逆序对问题,如果a[i]>a[j](i<j)则就是一个逆序对,此题可以用归并排序解决,也可以树状数组,不过我是当树状数组来练习的。此题数据有点大0 ≤ a[i] ≤ 999,999,999,所以需要把N个数进行离散化,因为我们对每个数的值
·
2015-11-11 12:25
Quicksort
poj 2299
Ultra-QuickSort
(线段树/树状数组/归并 求逆序对)
Problem: 2299 User: shu_dayang Memory: 7380K Time: 500MS Language: C++ Result: Accepted Source Code//树状数组 #include<iostream> #include<cstring> #include<cstdio> #include<
·
2015-11-11 06:13
Quicksort
PKU 2299
Ultra-QuickSort
题型:求逆序数 解法一:正统做法,归并排序,375MS。
·
2015-11-11 05:22
pku
POJ 2299
Ultra-QuickSort
计算逆序个数,方法参照《算法设计》(美)克林伯格,5.3节 代码 #include < iostream > using namespace std; #define M 500000 int a[M],b[M],ca[M]
·
2015-11-11 04:18
Quicksort
POJ 2299
Ultra-QuickSort
(归并排序求逆序对数)
这题是要求冒泡排序交换的次数,数据这么大,直接冒泡排序肯定超时,这题实际就是求逆序对数,可以用归并排序来求逆序对数, 只需要在代码注视处加上cnt+=m-p就可以了。 // 归并排序求逆序对数 #include < iostream > using namespace st
·
2015-11-11 02:27
Quicksort
POJ 2299
Ultra-QuickSort
(线段树入门)
Ultra-QuickSort
Time Limit: 7000MS Memory Limit: 65536K Description In this problem, you have to analyze
·
2015-11-11 00:12
Quicksort
POJ 2299
Ultra-QuickSort
题目链接:http://poj.org/problem?id=2299 用了树状数组,求逆序数。读入这些数,每读一个数就update一次,看一下它前面比它小的已出现过的有多少个sum(),然后用当前的位置-当前的sum(),就可以得到当前逆序对数了,加起来就得到总的逆序对数。 #include<cstdio> #include<cstring> #include&
·
2015-11-10 22:47
Quicksort
Poj 2299
Ultra-QuickSort
id=2299 2.Content:
Ultra-QuickSort
Time Limit: 7000MS Memory Limit: 65536K Total
·
2015-11-08 13:24
Quicksort
POJ 2299
Ultra-QuickSort
今晚学习了逆序数,基本上照着别人的程序写的。利用归并排序来统计逆序数。 当归并两条有序链时,可以同时计算逆序数。 当left<=i&
·
2015-11-07 13:34
Quicksort
poj 2299
Ultra-QuickSort
id=2299
Ultra-QuickSort
Description In this problem, you have to analyze a particular sorting
·
2015-11-07 10:57
Quicksort
Ultra-QuickSort
(poj 2002)
Description In this problem, you have to analyze a particular sorting algorithm. The algorithm processes a sequence of n distinct integers by swapping two adjacent sequence elements until
·
2015-11-06 07:24
Quicksort
POJ 2299
Ultra-QuickSort
【树状数组 ,逆序数】
题意:给出一组数,然后求它的逆序数 先把这组数离散化,大概就是编上号的意思--- 然后利用树状数组求出每个数前面有多少个数比它小,再通过这个数的位置,就可以求出前面有多少个数比它大了 这一篇讲得很详细 http://www.cnblogs.com/shenshuyang/archive/2012/07/14/2591859.html 1 #include<iostream
·
2015-11-03 21:57
Quicksort
Ultra-QuickSort
【归并排序典型题目】
Ultra-QuickSort
Time Limit: 7000MS Memory Limit: 65536K Total Submissions:
·
2015-11-03 20:01
Quicksort
树状数组求逆序对:POJ 2299、3067
首先是 POJ 2299
Ultra-QuickSort
: http://poj.org/problem?
·
2015-11-02 17:10
树状数组
【原】 POJ 2299
Ultra-QuickSort
逆序数 解题报告
http://poj.org/problem?id=2299 方法: 利用merge sort求逆序数,复杂度nlgn 如果比较每一对儿数(或使用bubble sort),复杂度为n^2,太慢 对于一对儿逆序对儿,有三种情况:两数都在数组左半边,两数都在数组右半边,两数分别在左右两个半边。 由于Merge时两个半边都为sorted,所以只会出现第三种情况。 计算
·
2015-11-02 15:51
Quicksort
POJ 2299
Ultra-QuickSort
(求逆序数,归并排序或者离散化+树状数组)
Ultra-QuickSort
Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 27665  
·
2015-11-02 13:07
Quicksort
POJ 2299
Ultra-QuickSort
归并排序、二叉排序树,求逆序数
题目链接: http://poj.org/problem?id=2299 题意就是求冒泡排序的交换次数,显然直接冒泡会超时,所以需要高效的方法求逆序数。 利用归并排序求解,内存和耗时都比较少, 但是有编码难度。。 二叉排序树,内存巨大,时间复杂度高,但是非常好写。。 归并排序版本: 1 #include <stdio.h> 2 #inc
·
2015-11-02 11:13
Quicksort
poj 2299
Ultra-QuickSort
(树状数组求逆序数)
链接:http://poj.org/problem?id=2299 题意:给出n个数,求将这n个数从小到大排序,求使用快排的需要交换的次数。 分析:由快排的性质很容易发现,只需要求每个数的逆序数累加起来就行了。逆序数可以用树状数组求。 n<500000,0<=a[i]<=999,999,999,很明显数组不可能开这么大,所以需要离散化。 可以用一个结构体 struct
·
2015-11-02 09:19
Quicksort
pku 2299
Ultra-QuickSort
归并排序求逆序数
http://poj.org/problem?id=2299 归并虽然知道了过程但是敲起代码来还是出现各种小错误。。。唉,,, View Code #include <cstdio>#include <iostream>#define maxn 500007using namespace std;int a[maxn];int n;int tmp[maxn];
·
2015-11-01 14:22
Quicksort
Hdu 1394 Minimum Inversion Number、Poj 2299
Ultra-QuickSort
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 题意:求某种规定序列中的最小逆序数。 递推比较最小那部分比较简单,就不说了。 主要想说:求逆序数可以用构建线段树的方法来做。其实思想和计数排序的思想差不多。每次处理a[i]时,先统计一下已经被计数的前几个数的计数和。(比较的是值。)然后再更新这个计数和。这道题的数据范围和下标范围是一样的,
·
2015-10-31 17:28
Quicksort
POJ 2299
Ultra-QuickSort
(树状数组+离散化)
题目大意: 就是说,给你一个序列,然后让你求出这个序列有多少个逆序对,所谓逆序对就是对于这个序列中的元素有a[i]>a[j] 且i<j存在。 其实原题是这样说的,给你一个序列,让你用最少的交换次数使得这个序列变成从小到大的排序. 解题思路: 一开始是想到了归并的思路,但是没有能写出来代码. 先来来范围吧,序列的长度n<=500000+4.  
·
2015-10-31 14:24
Quicksort
POJ-2299
Ultra-QuickSort
逆序对数量
题目链接:http://poj.org/problem?id=2299 给你一个升序列,然后要你只能交换相邻的两个数把这个序列按升序排列,求最少需要交换多少次。 不管怎么样,只要存在ai>aj(i<j),那么这两个数之间必须要交换。任意两个数不影响其它数之间的大小位置关系,所以可以看出就是求逆序对数量。求逆序对数量有很多方法,树状数组或者线段树优化等,但是用合并排序的方
·
2015-10-31 11:21
Quicksort
poj 2299
Ultra-QuickSort
(归并排序)
维基百科:动画很帅 ,很简明说明归并排序 http://en.wikipedia.org/wiki/Merge_sort 一看这题 7000MS ,果断 暴力, 结果TLE 。。。。 然后用归并写了一个,WA ,弱爆了,后来看了下解题报告, &
·
2015-10-31 11:36
Quicksort
UVa 10810 -
Ultra-QuickSort
题目:给出一个数列,每次交换相邻数字,求排成递增序的最少交换次数。 分析:逆序数。排序最少交换次数:1.相邻交换,为逆序数;随意交换,为总数减环个数。 证明:每次相邻交换时,逆序数减1或者加1,所以最优情况下,逆序数为交换次数下界。 &nb
·
2015-10-31 11:58
Quicksort
poj2299
Ultra-QuickSort
Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 20073
·
2015-10-31 10:10
poj
POJ 2299
Ultra-QuickSort
逆序数的定义: 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。逆序数为偶数的排列称为偶排列;逆序数为奇数的排列称为奇排列。如2431中,21,43,41,31是逆序,逆序数是4,为偶排列。 --摘自百度百科 记录数列的下标,按数列的值从小到大排序,所以后面插入的值肯定比前面的大,i - getsum
·
2015-10-31 10:52
Quicksort
Ultra-QuickSort
(超快速排序)
题目大意:给出一些数,用最小的交换相邻两个数,使得为正序,求最小交换次数 解决:可以用归并排序,由于在士兵杀敌系列中已经用过了,所以为了练练何为树状数组中的离散化,再用树状数组做了一遍 /* 本题思路,首先将范围在0 ≤ a[i] ≤ 999,999,999之间的点压缩到0- 500,000之间,然后统计每个数之前所有比这个数小的 */ #include <iostream>
·
2015-10-31 10:29
Quicksort
上一页
1
2
3
4
5
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他