
DataStructure/ACM
moxiaomomo
虚怀若谷,大爱无疆
展开
-
pku acm 题目分类
1.搜索 //回溯2.DP(动态规划) 3.贪心 北大ACM题分类2009-01-27 14.图论 //Dijkstra、最小生成树、网络流5.数论 //解模线性方程6.计算几何 //凸壳、同等安置矩形的并的面积与周长sp; 7.组合数学 //Polya定理8.模拟 9.数据结构 //并查集、堆sp; 10.博弈论 1、 排序sp; 1423, 1694, 1723, 1727, 1763, 1788, 1828, 1838, 1840, 2201, 2376, 2377, 2380, 1318, 1877转载 2010-09-27 14:09:00 · 1732 阅读 · 0 评论 -
pku 1273_Drainage Ditches 最大流问题
经典网络流问题,使用Ford Fulkson算法。思路大概是:求排水沟网络中的最大排水量。 从源点开始,每次寻找一条增广路径,更新一次,再重新找增广路径……直到没有为止。即每次寻找一条由源点到汇点的路径;原创 2010-10-31 19:08:00 · 1058 阅读 · 0 评论 -
T树的C++源码实现
因为是第一次写T树,网上的参考源码稀缺,所以程序中不免有bug,正在修正中。 #pragma once//// by xiaomo// 2011.06//Ttree.h#includeusing namespace std;enum ENUM{ MaxSize=64, MinSize=MaxSize-2};templatestruct TtreeNode原创 2011-06-09 21:03:00 · 4594 阅读 · 0 评论 -
一道面试题--翻转英文句子中的单词顺序
例如,句子"I miss you now"转为"now you miss I"。思路是先将整个句子翻转过来,然后再将每一个单词重新翻转一次,便可以得出翻转单词顺序的效果。代码示例: void Reverse(char* pb , char* pe) //将某原创 2011-09-24 00:22:27 · 4415 阅读 · 12 评论 -
数据库索引结构---T树的原理
索引用于在查询时提高效率之用。可以为每张表的某个字段定义索引来提高在该字段上的查询效率。由于数据库要处理的数据量非常大,而内存因为价格昂贵,而容量有限,且必须满足一定的实时性,因而对其中的数据的存储及索引方式进行研究,找出有效的数据组织方式是非常有必要的。磁盘数据库系统的典型的索引技术是B-tree索引。B-tree结构的主要目的是减少完成数据文件的索引查找所需要的磁盘I/O的数量。B-tre转载 2011-06-09 21:08:00 · 8483 阅读 · 0 评论 -
堆排序算法的C++实现
堆排序:n*log(n)的时间复杂度, 非稳定排序,原地排序。它的思想是利用的堆这种数据结构,堆可以看成一个完全二叉树,所以在排序中比较的次数可以做到很少。加上他也是原地排序,不需要申请额外的空间,效率也不错。堆的重要特点是每一次循环都会建立新的最大或最小堆。C++代码实现:void Heapfy(int A[],int idx,int max) //建立最大堆{ int left=idx*2+1; int right=left+1; int largest=idx;原创 2011-04-18 15:58:00 · 19089 阅读 · 2 评论 -
快速排序算法的一种实现
排序算法对于面试来说还是比较重要的...温习一下...int partition(int A[],int left,int right) //其中的一趟排序{ int p=(left+right)/2; int temp=A[right]; //将选中的标准值放到数组末尾 A[right]=A[p]; A[p]=temp; int a1=left,a2=right-1; while(a1=A[right]&&a1=A[right]) //将标准值重原创 2011-04-17 19:23:00 · 1010 阅读 · 0 评论 -
栈的push,pop序列
<br />题目:输入两个整数序列。其中一个序列表示栈的push 顺序,<br />判断另一个序列有没有可能是对应的pop 顺序。<br /> <br />思路:首先新建一个栈。从push序列开始遍历,如果当前元素与pop序列当前元素相等,则两个序列向前推进。<br /> 否则如果当前栈的栈顶元素与与pop序列当前元素相等,则pop序列向前推进,栈顶元素出栈。<br /> 否则如果当前push序列还没遍历完,则将push序列当前元素压入栈,然后继续迭代。<br />原创 2011-05-24 21:28:00 · 2244 阅读 · 0 评论 -
pku acm1579简单动态规划
<br />题目所给的函数就是递归函数,要是按照函数本身写递归式,由于子问题的扩展速度太快扩展范围太大,结果肯定是TLE。<br />因此,为了减少重复计算,引入一个三维数组。每次从w(a,b,c)开始递推时,在子问题中只要s[x][y][z]有返回值就记录一次;如果在递归过程中,遇到s[x][y][z]已被赋值,则在此子问题中不再进行递归,直接返回值s[x][y][z].<br />小结:这道题是很地道的DP,由于子问题过多,可以将问题的结果保存起来,避免重复递归。问题虽然简单,但包含很经典的dp思想。<原创 2010-11-10 21:32:00 · 898 阅读 · 0 评论 -
pku 2362_Square 深搜+回溯
<br />搜索经典题,与pku acm_1011题类似。<br />写得有点拗手,一开始都不知道跳到哪里去了,还得参考了很久以前做的1011题的源码,还得多多练习啊~<br /> <br />详细代码:<br />Problem: 2362 User: moxiaomomoMemory: 240K Time: 110MSLanguage: C++ Result: Accepted#include <iostream>#include <algorithm>using name原创 2010-11-01 00:27:00 · 986 阅读 · 0 评论 -
pku 2182_线段树简单应用
<br /> <br />题解:题目大意是说农场里有很多奶牛,每一头奶牛有唯一的标记号。在事先并不知道所有奶牛情况下,记录员从第一头牛开始记录数据。从第二头牛开始,每次都要计算有几头牛的标记号比当前这头牛的标记号要小,即有几头牛排在这头牛的前面。<br /><br /><br />线段树的经典应用,当然不是唯一方法。举个例子说明一下题意~<br /><br /><br />比如:n = 3<br />序列1 2 3中每个元素前面大于它的元素个数分别为0 1 2<br />输入为:0 1 1<br />则从最原创 2010-10-31 19:54:00 · 1030 阅读 · 0 评论 -
pku 3750
STL容器的简单应用。 原题:Description有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,直到所有的小孩都出列(总人数不足S个时将循环报数),求小孩出原创 2010-11-06 20:34:00 · 1284 阅读 · 0 评论