
算法总结 & 实现
文章平均质量分 58
Christine1024
这个作者很懒,什么都没留下…
展开
-
归并排序三种实现方法(递归、非递归和自然合并排序)
1. 递归实现归并排序1) 基本思想:将待排元素分成大小大致相同的2个子集,分别对2个子集合进行排序,最终将排好序的子集合合并 就会得到一个排好序的集合 即为所求设归并排序的当前区间是R[low..high],分治法的三个步骤是:① 分解:将当前区间一分为二,即求分裂点 ② 求解:递归地对两个子区间R[low..mid]和R[mid+1..high] 进行归并原创 2013-04-06 23:28:48 · 12194 阅读 · 2 评论 -
Kickstart Round B 2017——Problem B. Center(及一点延伸)
题目介绍题目链接: https://codejam.withgoogle.com/codejam/contest/11304486/dashboard#s=p1 题目大意:二维平面上有N个点,每个点的坐标为(Xi, Yi),每个点的权重为Wi,找到一个中心点(X, Y),使得max(|X-Xi|, |Y-Yi|)*Wi的和最小。N最大10000。相关知识先介绍一些概念性的东西(机器学习的东西原创 2017-05-10 00:05:24 · 1442 阅读 · 2 评论 -
分治法求最近点对
Implement the algorithm for the closest pair problem in your favorite language.INPUT: Given n points in a plane.OUTPUT: the pair with the least Euclidean distance.#include #include #incl原创 2015-11-30 16:22:18 · 2612 阅读 · 1 评论 -
归并排序求逆序数
#include #include #include #include #include using namespace std;long long numberOfInvertion; // the number of invertions.long long SortAndCount(vector &v, int low, int high);long long Merg原创 2015-11-30 16:18:56 · 561 阅读 · 0 评论 -
单纯形算法求解线性规划问题(依据《算法导论》实现)
#include #include #include #include #include using namespace std;const int MAXN = 100;const double INF = 999999.0;const double EPS = 1e-9;double b[MAXN]; //constraint in each equationdouble原创 2015-11-30 16:05:30 · 2746 阅读 · 0 评论 -
Huffman编码实现压缩、解压文件
Huffman编码:根据词频构建Huffman树,实现对文本的前缀编码。1、统计文本中每个字符出现的次数,放入优先队列中,构建一棵空的二叉树;2、取出频率最小的两个字符a、b,字符a、b的频率分别作为此二叉树的左右结点,左结点的编号为1,右结点的编号为0,其频率之和(fa+ fb)作为该二叉树的父亲节点,放入优先队列,并将fa 、fb从优先队列中除去;3、重复第二步操作,直至原创 2015-11-14 01:15:05 · 4781 阅读 · 0 评论 -
Qsort 二级排序
#include #include struct Node{int x;int y;}s[100];int Comp(const void *a, const void *b){ struct Node *c = (Node *)a; struct Node *d = (Node *)b; if( c->x != d->x) return c->x原创 2014-07-11 00:40:53 · 1594 阅读 · 0 评论 -
三分搜索法
二分法作为分治中最常见的方法,适用于单调函数,逼近求解某点的值。但是当函数是凸性函数或者凹性函数时,二分法就不再适用,这时我们便用到的三分法。如上图所示,类似二分的定义,mid = (left + right)/ 2,midmid = (mid + right)/ 2,如果mid靠近极值点,则 right = midmid,否则 left = mid。三分搜索法的模板如下:原创 2013-09-24 11:33:27 · 1230 阅读 · 0 评论 -
编译器手动开栈
鉴于HDU用的是windows服务器,所以stack大小及其坑爹,稍微深一点的递归栈就会stack overflow。 通常的规避方法是用stack或者手写stack模拟栈的递归过程 用手工扩展栈。微软的编译器(C++)#pragma comment(linker, "/STACK:102400000,102400000")G++原创 2013-10-09 18:15:29 · 3197 阅读 · 0 评论 -
位运算简介及实用技巧
转载出自http://matrix67.com===== 真正强的东西来了! =====二进制中的1有奇数个还是偶数个 我们可以用下面的代码来计算一个32位整数的二进制中1的个数的奇偶性,当输入数据的二进制表示里有偶数个数字1时程序输出0,有奇数个则输出1。例如,1314520的二进制101000000111011011000中有9个1,则x=1314520时转载 2013-08-29 10:51:08 · 598 阅读 · 0 评论 -
总结
ACM队不是为了一场比赛而存在的,为的是队员的整体提高。大学期间,ACM队队员必须要学好的课程有:l C/C++两种语言l 高等数学l 线性代数l 数据结构l 离散数学l 数据库原理l 操作系统原理l 计算机组成原理l 人工智能l 编译原理l 算法设计与分析除此之外,我希望你们能掌握一些其它的知识,因为知识都是相互联系,触类旁通的。以下学转载 2013-04-25 15:49:58 · 731 阅读 · 0 评论 -
经典排序算法的实现和比较(简略版)
七种排序算法的实现:1. 冒泡排序#includeusing namespace std;void BubbleSort(vector &v, int left, int right) { for(int i = left; i < right; i++) { bool flag = false; for(int j = 0; j < rig原创 2017-07-26 16:02:12 · 544 阅读 · 0 评论