树状数组,具体的说是 离散化+树状数组。这也是学习树状数组的第一题.
算法的大体流程就是:
1.先对输入的数组离散化,使得各个元素比较接近,而不是离散的,
2.接着,运用树状数组的标准操作来累计数组的逆序数。
算法详细解释:
1.解释为什么要有离散的这么一个过程?
刚开始以为999.999.999这么一个数字,对于int存储类型来说是足够了。...
分类:
编程语言 时间:
2015-08-12 19:29:01
阅读次数:
136
题意:有长度为n的序列,序列的数字是0~n-1组成,然后这个序列可以看做环,那么就有n个长度为n的序列,问n个序列里最小逆序数是多少。
题解:先把初始序列的逆序数算出来,然后移动每一个开头数字a到后面,逆序数变化的是比a大的数字逆序数加一,比a小的逆序数减一,所以按这个规律再循环一次找最小值就可以了。#include
#include
#include <al...
分类:
其他好文 时间:
2015-08-12 01:30:41
阅读次数:
145
题目链接:二分·归并排序之逆序对题目大意:N个整数,第i个数表示等级第i低的船的火力值a[i],求A船比B船等级高,但是A船火力低于B船,相当于就是求逆序数吧解题思路:把序列分成元素个数尽量相等的两半把两半元素分别排序把两个有序表合并成一个二分归并排序做法:/********************...
分类:
编程语言 时间:
2015-08-12 01:15:24
阅读次数:
134
题目链接:http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=197228题意: 给定n个数(即1~n),已知其组成的排列逆序数为k,求这n个数的排列的排列情况之一。(与已知排列求逆序数相反)案例: Input 4 5...
分类:
其他好文 时间:
2015-08-10 21:36:45
阅读次数:
101
题意:给你n个数字的序列 每次把第一个数字放到最后 得到一个新序列 一共有n个序列求这些序列中哪个序列含最小的总的逆序数 (输出最小总逆序数)分析:用BIT求出初始各数的逆序数,第一个数放最后它逆序数变正序,正序变逆序。#include #include #include #include #inc...
分类:
其他好文 时间:
2015-08-09 22:29:39
阅读次数:
143
题目链接:http://poj.org/problem?id=2299题意就是求把数组按从小到大的顺序排列,每次只能交换相邻的两个数, 求至少交换了几次就是求逆序数用归并排序#include#include#include#define N 501000using namespace std;int...
分类:
编程语言 时间:
2015-08-09 20:26:33
阅读次数:
126
> 分析 >> 本题分两步 1. 计算序列的逆序数 2. 根据逆序数排序 >> 由于序列个数最大只有100个, 所以不需要过分追求速度,插入排序就够用> 注意: >> 存储序列的数组长度最好是50+1, 有利于输出> 附代码 1 #include "stdio.h" 2 3 int main(...
分类:
编程语言 时间:
2015-08-09 15:28:44
阅读次数:
151
题目:bobo has a sequence a1,a2,…,an. He is allowed to swap twoadjacentnumbers for no more than k times.Find the minimum number of inversions after his s...
分类:
编程语言 时间:
2015-08-08 19:46:37
阅读次数:
133
Descriptionbobo has a sequence a1,a2,…,an. He is allowed to swap twoadjacentnumbers for no more than k times.Find the minimum number of inversions aft...
分类:
移动开发 时间:
2015-08-08 16:11:05
阅读次数:
171
#includeusing namespace std;int Merge(int *list,int*copy,int s1,int s2,int end){ int i=s1; int j=s2; int k=s1; int num=0; for(int k=s1;...
分类:
其他好文 时间:
2015-08-08 13:23:42
阅读次数:
104