这题是2Y,第一次WA贡献给了没有long long 的答案QAQ题意不难理解,解题方法不难。先用归并排序求出原串中逆序对的个数然后拿来减去k即可,如果答案小于0,则取0学习了归并排序求逆序对的方法,可以拿来当模板 TVT贴代码了: 1 #include 2 #include 3 #includ.....
分类:
其他好文 时间:
2014-08-05 21:49:30
阅读次数:
250
一、概念: 在计算机科学中,分治法是建基于多项分支递归的一种很重要的算法范式。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以寄简单的直接求解,原问题的解即子问题的解的合并。 这个技巧是很多高校算法的基础,如排序算法(快速排序、归并排序)、...
分类:
其他好文 时间:
2014-08-05 15:33:29
阅读次数:
178
思路:类似归并排序算法,在合并已经有序的相邻子数组的时候,计算前面数组相对于后面数组的逆序对数,整个递归过程可以算出所有逆序对#include void merge(int A[], int front, int middle, int end, int &count){ if (front ...
分类:
其他好文 时间:
2014-08-04 21:26:48
阅读次数:
262
题目:已知有两个有序的单链表,其头指针分别为head1和head2,实现将这两个链表合并的函数:
Node* ListMerge(Node *head1,Node *head2)
这个算法很像我们排序算法中的归并排序,只能说“很像”,因为思想是一样的,但是这个与归并排序还是有区别的,区别如下:
1.归并排序是针对有序数组,而这里是有序链表;
2.归并排序排序的时间复杂度为o(nlogn),而这里的时间复杂度最坏情况下为O(m+n),最好的情况下为...
分类:
其他好文 时间:
2014-08-04 17:43:47
阅读次数:
296
链表排序:算法-归并排序public class LinkedSort { private static class ListNode { int val; ListNode next; ListNode(int x) { val...
分类:
其他好文 时间:
2014-08-04 17:09:37
阅读次数:
247
博主sbit。。。。对于高级数据结构深感无力,然后这些东西在OI竟然烂大街了,不搞就整个人都不好了呢。于是我勇猛的跳进了这个大坑 ——sbit区间K大的裸题,在线,无修改。可以用归并树(\(O(nlog^3n)\)),也可用划分树(\(O(nlogn + mlogn)\))。果断划...
分类:
其他好文 时间:
2014-08-04 01:51:46
阅读次数:
391
题目链接K-th NumberTime Limit:20000MSMemory Limit:65536KTotal Submissions:36890Accepted:11860Case Time Limit:2000MSDescriptionYou are working for Macrohar...
分类:
其他好文 时间:
2014-08-02 20:46:54
阅读次数:
260
问题:有序合并两个有序链表分析:归并排序的合并部分class Solution {public: ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) { ListNode *helper=new ListNode(0); ...
分类:
其他好文 时间:
2014-08-02 18:17:03
阅读次数:
170
排序算法总结(C语言版)1. 插入排序1.1 直接插入排序1.2 Shell排序2. 交换排序2.1 冒泡排序2.2 快速排序3. 选择排序3.1 直接选择排序3.2 堆排序4. 归并排序4.1 二路归并排序4.2 自然合并排序5. 分布排序5.1 基数排序1.插入排序1.1 直接插入排序...
分类:
编程语言 时间:
2014-08-01 23:04:42
阅读次数:
349
归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个有序的子序列,再把有序的子序列合并为整体有序序列。
例如有两个有序表:(7,10,13,15)和(4,8,19,20),归并后得到的有序表为:(4,7,8,10,13,15,19,20)。
代码:
#include
using namespace std;
void mergearra...
分类:
其他好文 时间:
2014-08-01 16:10:31
阅读次数:
145