算法
PhoenixDead
这个作者很懒,什么都没留下…
展开
-
poj3439 A Simple Problem with Integers 延迟更新的线段树
思路:使用线段树,并且采用延迟标记的方法使更新操作的复杂度控制在O(logn)。这里采用数组的方法存储二叉树,可以省下两个指针的空间,但代码变得不是很直观,而且容易犯错。另外此题中数据可能超过32位,故使用long long类型存储(POJ平台不能采用__int64,具体原因参见这里),同时使用%lld输出。另外,直接使用scanf读入一个字符的方法会读入空白字符,这里使用scanf("%1s原创 2012-10-19 00:59:45 · 532 阅读 · 0 评论 -
POJ2255Tree Recovery
2255:Tree Recovery题目分析:使用前序序列和中序序列构造后序序列的题。当时面微软实习生的时候还问过这个。前序的第一个节点就是后序的最后一个节点,且该节点把中序序列划分成左右两个子树。中序的这两个子树对应着前序的两个子树,他们的长度分别相等。代码如下:#include #include using namespace std;string getPost原创 2012-10-03 22:15:11 · 513 阅读 · 0 评论 -
POJ1083 Moving Tables
1083:Moving Tables题目分析:初看似乎像贪心算法中的活动安排问题,不同的是这里的所有活动(相当于搬桌子的距离)都需要安排。有四种贪心策略:最短优先,最长优先,最早开始时间优先,最早结束时间优先。活动安排问题采用的是最早结束时间优先。此题要求所有活动都被安排,直观的想同时进行的活动相互之间的间隔最小最好。可以证明最早开始时间优先满足要求。证明:令S = P1,P2,P原创 2012-10-03 20:11:08 · 687 阅读 · 1 评论 -
POJ2159 Ancient Cipher
2159:Ancient Cipher题目分析:很简单的一道题。大意是判断两个字符序列是否可以通过字符替换(substitution )和交换(permutation)变成对方。初看似乎需要穷举所有substitution和permutation序列,但细想后发现:1.permutation让序列不用考虑顺序问题,可以看作是两个字符集合,题目简化为判断两个字符集合是否可通过substi原创 2012-10-02 22:21:07 · 1597 阅读 · 2 评论 -
POJ2262 Goldbach's Conjecture
2262:Goldbach's Conjecture题目分析:一百万个数,开辟一个数组用于标识是否是素数,用bool型表示,总内存小于1M,然后查表即可。建立素数表,对每个素数,把该素数的所有倍数所在的位置都置为false。代码如下:1048kB 50ms688 B#include int main(){ bool primeMap[1000000];原创 2012-10-03 21:57:49 · 577 阅读 · 0 评论 -
POJ3438 Balanced Lineup 基本线段树
线段树的模板题,另外此题还能用SparseTable解。#include struct CowRange{ int l,u; CowRange *left,*right; int max,min;};CowRange* BuildInTree(int l, int u, int *height){ CowRange *root = new CowRa原创 2012-10-18 21:23:23 · 818 阅读 · 0 评论 -
POJ2528 Mayor's poster 线段树+插入节点建树解法
此题和普通的线段树题相比,最大的挑战在于区间太大,如果一开始就建立一个完整的线段树,空间太大。所以,先只建立根节点,每来一组数据,用普通的线段树查找方法沿根节点查找,如果此组数据的子树不存在,则建立子树。最后递归删除线段树。结果为:15308kB 80ms如果最后不删除树,时间所减少,空间增大。为:20324kB60ms#include #include struct原创 2012-10-19 22:15:19 · 1351 阅读 · 0 评论 -
POJ2528 Mayor's poster 线段树+离散化解法
标准解法是用的离散化。此题的特殊性在于普通离散化后,两个相邻的值之间的区间也可能是有效的区间。例如:有三张海报[1, 4] [5, 6][1, 6],离散化后1->1, 2->4, 3->5, 4->6。他们就会覆盖[1, 6]这张海报。另外三张海报[1, 3] [5, 6][1, 6],离散化后1->1, 2->3, 3->5, 4->6。他们不会覆盖[1, 6]这张海报。而此时两组原创 2012-10-19 22:31:44 · 849 阅读 · 0 评论 -
POJ分层练习题目列表
POJ上的一些水题(可用来练手和增加自信) (poj2159,poj1083,poj2262,poj2255) 初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj3转载 2012-10-02 21:41:44 · 635 阅读 · 0 评论