![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
PhoenixDead
这个作者很懒,什么都没留下…
展开
-
poj3439 A Simple Problem with Integers 延迟更新的线段树
思路:使用线段树,并且采用延迟标记的方法使更新操作的复杂度控制在O(logn)。这里采用数组的方法存储二叉树,可以省下两个指针的空间,但代码变得不是很直观,而且容易犯错。 另外此题中数据可能超过32位,故使用long long类型存储(POJ平台不能采用__int64,具体原因参见这里),同时使用%lld输出。另外,直接使用scanf读入一个字符的方法会读入空白字符,这里使用scanf("%1s原创 2012-10-19 00:59:45 · 533 阅读 · 0 评论 -
POJ2255Tree Recovery
2255:Tree Recovery 题目分析:使用前序序列和中序序列构造后序序列的题。当时面微软实习生的时候还问过这个。 前序的第一个节点就是后序的最后一个节点,且该节点把中序序列划分成左右两个子树。中序的这两个子树对应着前序的两个子树,他们的长度分别相等。 代码如下: #include #include using namespace std; string getPost原创 2012-10-03 22:15:11 · 521 阅读 · 0 评论 -
POJ1083 Moving Tables
1083:Moving Tables 题目分析:初看似乎像贪心算法中的活动安排问题,不同的是这里的所有活动(相当于搬桌子的距离)都需要安排。 有四种贪心策略:最短优先,最长优先,最早开始时间优先,最早结束时间优先。活动安排问题采用的是最早结束时间优先。此题要求所有活动都被安排,直观的想同时进行的活动相互之间的间隔最小最好。可以证明最早开始时间优先满足要求。 证明:令S = P1,P2,P原创 2012-10-03 20:11:08 · 694 阅读 · 1 评论 -
POJ2159 Ancient Cipher
2159:Ancient Cipher 题目分析:很简单的一道题。大意是判断两个字符序列是否可以通过字符替换(substitution )和交换(permutation)变成对方。初看似乎需要穷举所有substitution和permutation序列,但细想后发现: 1.permutation让序列不用考虑顺序问题,可以看作是两个字符集合,题目简化为判断两个字符集合是否可通过substi原创 2012-10-02 22:21:07 · 1606 阅读 · 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 · 585 阅读 · 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 · 821 阅读 · 0 评论 -
POJ2528 Mayor's poster 线段树+插入节点建树解法
此题和普通的线段树题相比,最大的挑战在于区间太大,如果一开始就建立一个完整的线段树,空间太大。所以,先只建立根节点,每来一组数据,用普通的线段树查找方法沿根节点查找,如果此组数据的子树不存在,则建立子树。最后递归删除线段树。 结果为: 15308kB 80ms 如果最后不删除树,时间所减少,空间增大。为: 20324kB60ms #include #include struct原创 2012-10-19 22:15:19 · 1356 阅读 · 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 · 850 阅读 · 0 评论 -
POJ分层练习题目列表
POJ上的一些水题(可用来练手和增加自信) (poj2159,poj1083,poj2262,poj2255) 初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj3转载 2012-10-02 21:41:44 · 637 阅读 · 0 评论