#include <iostream> using namespace std; #define maxn 10005 #define inf 999999 int L[maxn], R[maxn],A[maxn],cnt,n; void merge(int left, int mid, int r... ...
分类:
编程语言 时间:
2019-08-28 11:14:23
阅读次数:
95
1 题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 2 思路和方法 利用归并排序的思想,先把数组分隔成子数组,先统计出子数组内部的逆序 ...
分类:
编程语言 时间:
2019-08-27 23:28:55
阅读次数:
159
一、分治策略 “分而治之”,大问题能够拆成相似的小问题,记住这些小问题需要具有相似性。而后将小问题的每个解合成为大问题的解。所以说大问题如何拆,小问题如何合并才是这个算法最主要的一个思想。实际上很多算法如贪心算法,动态规划等等都是要求把大问题拆成小问题。而分治算法的重要一点就是要适用于能够重新把小问 ...
分类:
编程语言 时间:
2019-08-27 23:22:51
阅读次数:
108
本实例主要用到python的jieba库 首先当然是安装pip install jieba 这里比较关键的是如下几个步骤: 加载文本,分析文本 对数据进行筛选和处理 创建列表显示和排序 具体脚本如下,每一步都有解析,就不分步解释了 毫无疑问,张无忌妥妥的主角 参考: https://gitee.co ...
分类:
编程语言 时间:
2019-08-27 22:43:57
阅读次数:
165
题目链接:https://vjudge.net/problem/POJ-2299 题意:给定一个序列,每次只能交换邻近的两个元素,问要交换多少次才能使序列按升序排列。 思路:本质就是求逆序对。我们用归并排序求逆序对,这也是简单的cdq分治。 ...
分类:
编程语言 时间:
2019-08-27 11:06:04
阅读次数:
85
原文引用https://www.dazhuanlan.com/2019/08/26/5d62f77c1b321/ Description题目大意,给你一串每个元素不相同的序列,每次只能相邻的两个元素进行交换,求,最小多少次交换可以使该序列成为上升序列。注意:明白一个规律,一个数x,肯定要和在它左边且... ...
分类:
编程语言 时间:
2019-08-26 10:15:05
阅读次数:
111
稳定性 如果一个排序算法能够保留数组中 重复元素的相对位置 则可以被称为是 稳定 的 稳定的排序算法:插入排序、归并排序 不稳定的排序算法:选择排序、希尔排序、快速排序和堆排序 一般只有在稳定性是必要的情况下,稳定的排序算法才有优势。 各种排序算法的性能特点 | 算法 | 是否稳定 | 是否为原地排 ...
分类:
编程语言 时间:
2019-08-25 20:18:42
阅读次数:
109
归并排序 package algorithm.sort; / @Auther: AaronPi @Date: 2019 5 6 21:32 归并排序 思想:(分治法 用递归来实现)把数组从中间分成两部分,分别排序,再组合在一起 思路很巧妙,需要尤其注意边界条件、判断剩余元素等事项 / public ...
分类:
编程语言 时间:
2019-08-25 14:13:25
阅读次数:
94
快速排序 package algorithm.sort; / 快速排序 思想:类似于归并排序,但是不同于归并排序每次排序寻找一次子数组中点的是,寻找一个更恰当的分区点 @Author 28370 @Date 2019 5 13 / public class QuickSort { public st ...
分类:
编程语言 时间:
2019-08-25 14:06:52
阅读次数:
80
hdu 5884 Sort 题意: n个有序序列的归并排序。每次可以选择不超过k个序列进行合并,合并代价为这些序列的长度和,总的合并代价不能超过T, 问k最小是多少。 解法: 1:首先想到的是二分这个答案k,然后check每个k是否可行 2:对于每个k,总共需要归并n 1个数,每次归并k 1个数 所 ...
分类:
其他好文 时间:
2019-08-22 22:22:33
阅读次数:
117