摘要:
题意:给出一系列点的坐标,要求能组成几个不同的平行四边形。要点:思路很简单,找两个点的中点组成哈希表即可,我用链表写不是超时就是超空间,看来ACM还是尽量别用指针,用数组模拟链表可过。15878931Seasonal1971Accepted36868K704MSC++... 阅读全文
摘要:
题意:已知a1,a2,a3,a4,a5,求a1x13+ a2x23+ a3x33+ a4x43+ a5x53=0有几个解。要点:跟hash其实关系不大,主要是移项,求a1x13+ a2x23+ a3x33=a4x43+ a5x33,这样只要三次循环即可,注意数组负数下... 阅读全文
摘要:
看算法导论补了一下散列表,也就是hash表,hash表还是很好用的,兼顾了空间和时间,查找操作只要O(n/m),基本的难点在散列函数这里,全域散列这里看不太懂,初步敲了一下除法散列法和乘法散列法的实现,基本没啥好说的,看完开放寻址法以后找两道OJ题做做。#includ... 阅读全文
摘要:
一:最小值和最大值在有n个元素的集合中如果想找最小值,最优也就是n-1次,但如果同时找最大值和最小值,最优可以不是2(n-1)次而是3*(n/2)次,基本思路是成对的比较,先两个数之间比较,较小值与最小值比较,较大值与最大值比较,注意奇数偶数要分开讨论。#includ... 阅读全文
摘要:
一般我们使用的堆排序,归并排序都是属于比较排序,也就是通过比较元素的大小来进行排序,可以通过决策树分析出比较排序的时间下界是O(nlgn),堆排序和归并排序都是渐进最优的比较排序算法。还有其他的排序方法不是通过比较,下面总结一下:一:计数排序大致思路是将数组中所有元素... 阅读全文
摘要:
最优队列就是靠堆实现的,普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 (largest-in,first-out)的行为特征。也就最优队列可以保... 阅读全文
摘要:
暑假开始啃算法导论了,先解决堆的问题。首先堆排序使用的是最大堆,特点是堆顶元素大于其他所有数,堆排序就是利用了这一点,需要三个函数:1.维护最大堆性质:MaxHeapify(int a[], int i),基本思路是比较节点i和它的左右孩子,选出最大的交换位置,注意交... 阅读全文
摘要:
题意:看白书要点:白书上的题,还是有些难度的,具体分析看书吧,难点就是要求res[i][j]。#include#include#include#includeusing namespace std;#define maxn 5005#define inf 0x3f3f... 阅读全文
摘要:
题意:有一个字符串以及有很多单词的字典,求在字符串中删除最少的单词数,使字符串和字典中的单词完全匹配。要点:这题我是没想出来,看了网上大神的解题报告。重点就是用dp[i]表示从i 到字符串末尾n要删除的最小数目,后面再分为能匹配和不能匹配进行状态转移。参考博客:点击打... 阅读全文
摘要:
题意:输入一组小鼠的体重和速度,要求输出体重从小到大而速度从大到小的数目最多的小鼠的数量和具体序号。要点:简单的最长上升子序列,只要先排序再DP即可,就是要记录一下路径最后递归输出就行。174476802016-07-06 14:10:34Accepted11600M... 阅读全文