离散化加 求逆序数: 求逆序数的方法 一个是归并排序 一个是树状数组 ...
分类:
其他好文 时间:
2019-02-08 21:55:55
阅读次数:
232
树状数组可以省时间而且省空间的求值和修改,相比于线段树来说代码量少,但我感觉树状数组求逆序数的功能更为强大,树状数组 可以利用从当前加入的数到最大全部添加的优势快速的使比当前加入的数大的所有数加一,省时省空间. 代码: 但对于题目来说单单求逆序数就很没意思了,例如让你求 x > y 时 ax<y 的 ...
分类:
编程语言 时间:
2019-01-14 20:19:15
阅读次数:
208
看了一下题目的意思,求逆序数,求出逆序数最大的行号。 求逆序数是经典问题,想起当年刚学编程时,算法导论里就有这个习题,如何将merge sort修改为可以计算逆序数的版本,于是写了一下,得到了以下一份答案。 1 #include <iostream> 2 #include <algorithm> 3 ...
分类:
其他好文 时间:
2018-11-11 16:54:00
阅读次数:
183
#include #include #include #include #include using namespace std; int d[30][30005]; //d[i][j] i件中,j重量的物品 ,价格最高 int v[30],w[30]; int Max(int a,int b) {... ...
分类:
其他好文 时间:
2018-10-22 22:19:48
阅读次数:
175
#include #include #include #include #include using namespace std; struct HY { int u,v; }hy[10005]; bool cmp(HY a,HY b) { if(a.v == b.v) return a.u>b.u... ...
分类:
其他好文 时间:
2018-10-22 22:15:22
阅读次数:
244
737-石子合并(一) 内存限制:64MB 时间限制:1000ms 特判: No通过数:28 提交数:35 难度:3 题目描述: 有N堆石子排成一排,每堆石子有一定的数量。现要将N堆石子并成为一堆。合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为 ...
分类:
其他好文 时间:
2018-10-05 21:33:09
阅读次数:
256
题目: ? 思路:先离散化数据然后树状数组搞一下求逆序数。 离散化的方法:https://blog.csdn.net/gokou_ruri/article/details/7723378 自己对用树状数组求逆序数的理解:输入数据并利用树状数组求出前边比它小和等于它的数据有几个,用输入数据的总的个数减 ...
分类:
编程语言 时间:
2018-10-02 22:18:41
阅读次数:
217
给一个数列问将其排序递增或者递减序列的最小交换次数。 一。 只能交换相邻元素 该情况下最少交换次数即为逆序数的数目,求逆序数只要从1~n遍历数组,每次添加一个数字到树状数组然后求前缀和即可 二。可以交换任意位置的元素 例如2 4 3 1,可以知道1应该与2交换,而2应该与4交换,4应该与1交换,这样 ...
分类:
其他好文 时间:
2018-09-30 22:42:44
阅读次数:
474