随笔分类 -  POJ

POJ 2513 Trie+并查集+欧拉回路
摘要:自己的代码超时了。。。不应该啊,方法没错哦,明天检查一下吧,网上看到一份不错的代码,不是针对于该题目,而是打印中间过程的方法,很细致,非常有利于debug#include <stdio.h> #include <string.h> //#define DEBUG #ifdef DEBUG #define debug(...) printf( __VA_ARGS__) #else #define debug(...) #endif #define M 530001 #define N 500001 struct trie_node { ... 阅读全文
posted @ 2011-10-25 00:09 geeker 阅读(302) 评论(0) 推荐(0)
POJ-1141-完全加括号-DP
摘要:http://poj.org/problem?id=1141这是一道典型的动态规划题目,过去做过类似的,如POJ3391,思路几乎一摸一样,但是这道题目唯一比较讨厌的地方就是,得构造出最终的最优解,就是得显示出最优解的摸样,本来想通过做标记的方式,把DP的路径记录下来,后来感觉很麻烦,于是又加了一个bestStr[][]数组,元素类型是string,把每一个状态的形态记录了下来,bestStr[0][n-1]即是最优解,但是这样够早的话,可能附加操作比较多,因为每次都涉及很多字符串衔接的操作,导致最终居然超时。。。有时间,换一个方法实现以下好了,不用记忆搜索,换成循环递归实现以下,看看是否能摆 阅读全文
posted @ 2011-10-16 23:47 geeker 阅读(785) 评论(1) 推荐(1)
POJ-1988-Cube_Stacking-并查集
摘要:http://poj.org/problem?id=1988看黑书看到并查集,练了一道并查集的题目,很典型,不是很难,但是细节上的处理还是比较容易出错的。理解题意之后,首先对状态进行建模。分别建立三个数组,意义如下int father[i];//记录 i 的父亲节点,注意不一定是根节点,路径压缩之后才一定是根节点int total[i];//记录集合中元素个数,仅当i为根节点该值才有意义int deep[i];//每棵树距离父亲的距离,注意不是根树,所以每次进行路径压缩压缩的时候,将原父亲改为根节点时不要忘记将深度值也同时进行修改如果输入为Mi j 那么就调用合并函数unin(i,j)如果输入 阅读全文
posted @ 2011-10-16 01:26 geeker 阅读(235) 评论(0) 推荐(0)
POJ 2586盈亏表-贪心策略
摘要:该题,对题目的理解是关键。。。(好恶心)http://poj.org/problem?id=2586题意:有一个公司由于某个病毒使公司赢亏数据丢失,但该公司每月的赢亏是一个定数,要么一个月赢利s,要么一月亏d。现在ACM只知道该公司每五个月有一个赢亏报表,而且每次报表赢利情况都为亏。在一年中这样的报表总共有8次(1到5,2到6,…,8到12),现在要编一个程序确定当赢s和亏d给出,并满足每张报表为亏的情况下,全年公司最高可赢利多少,若存在,则输出多多额,若不存在,输出"Deficit"。分析:在保证连续5个月都亏损的前提下,使得每5个月中亏损的月数最少。 x=1: ssss 阅读全文
posted @ 2011-10-12 19:45 geeker 阅读(730) 评论(0) 推荐(0)
POJ1753棋盘翻转 枚举+DFS
摘要:练习枚举方法,网上推荐做POJ1753,感觉似曾相识,不管,就做了,后来才发现,这道题目,过去做过,不过过去用的是DFS方法,其实两种方法都不错,都属于基本算法,而且模拟操作也适合基础练习。模拟的话应该应该建立两个矩阵initMap[][],ope[][], (因为每次枚举都要初始化棋盘所以,每次拷贝棋盘到map[][]上,在map[][]上进行操作修改。)假设map[i][j]=1则为黑色,map[i][j]=0为白色每次枚举ope[][]矩阵的第一行ope[1][j],共有16中情况{0,0,0,0},{0,0,01}.....{1,1,1,1}可以发现一个规律,如果从上到下,从左到右填写 阅读全文
posted @ 2011-10-12 17:41 geeker 阅读(679) 评论(0) 推荐(0)
POJ1042-Gone Fishing 贪心经典
摘要:http://poj.org/problem?id=1042此题没有AC成功,因为每个湖的时间输出有一定的顺序要求,目前还不知道怎么处理。。。#include<iostream>using namespace std;struct Lake{ int id; int time; int num; int decr; bool operator > (const Lake &a)const{ return num > a.num; } void operator =( Lake &a){ id=a.id; tim... 阅读全文
posted @ 2011-09-30 20:21 geeker 阅读(399) 评论(0) 推荐(0)
POJ 2083 递归绘制图形
摘要:/*POJ 2083简单递归即输出图形X-X X XX X-X X X X X XX X X X X X X X XX X X X X XX X X X-X X X X X X X X X X X XX X X X X X X X X X X X X X X X X XX X X X X X X X X X X XX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X XX X X X X X X X X X X XX X X X X X X X X X X X X X X X X XX X X X X X X X X X 阅读全文
posted @ 2011-05-18 22:38 geeker 阅读(738) 评论(0) 推荐(0)
POJ 2018 动态规划
摘要:http://poj.org/problem?id=2018题意很简单,就是给你N个数,让你求一个连续数串的平均值最大,连续数串的个数不得低于F个。那么就设dp[i],为以第i个数为最后一个数所能得到的最大平均值。那么dp[i]要在两种情形中选择最大值,第一种是基于dp[i-1],把第I个数作为前面串的末尾,第二种情况自己单独起一长度为F的串。代码如下:#include<iostream>using namespace std;const int NUM = 100001;int cows[NUM];int cowsum[NUM];//记录前F项之和,输入顺便打表,方便之后运算st 阅读全文
posted @ 2011-05-18 00:49 geeker 阅读(1179) 评论(7) 推荐(1)
数据结构与算法(6)——哈希表
摘要:在很多情况下,我们需要实现一个符号表,里面保存我们用到的所有符号。每个符号有一个关键码key(不同符号的关键码也不同),其余部分可能非常庞大。换句话说,符号表应该提供以下操作:Search(T, k):查找关键码k是否在表中Insert(T, x):把x添加到表中Delete(T, x):从表中删除元素x有时也把符号表称为"字典",它最经典的实现方法是哈希表。哈希表的不同设计方法以及解决冲突的方法,我觉得单单看算法书或者数据结构上的书不是很好理解,但是结合具体的题目实例来看,就相当的具体与好理解,哈希表的思想就类似于我们平时用字典查英语单词,没有一个人会从第一页一页一页的去 阅读全文
posted @ 2011-05-17 21:08 geeker 阅读(2844) 评论(0) 推荐(1)
字典树 POJ2001
摘要:首次认识到Trie树的强大之处!简单易懂,只要对建立一般的树的方法有所了解就OK了。Trie树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。它有3个基本特性: 1)根节点不包含字符,除根节点外每一个节点都只包含一个字符。 2)从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串。 3)每个节点的所有子节点包含的字符都不相同。http://poj.org/problem?id=20011 #includ... 阅读全文
posted @ 2011-05-17 07:37 geeker 阅读(805) 评论(0) 推荐(1)
POJ 2673 模拟题一定要注意各种特殊情况 !!!
摘要:http://poj.org/problem?id=2673题目描述:一个人有t秒时间,每秒能干x量的工作。有m只动物,开始时,第i只动物离人有di的距离,它的速度是si每秒。只要人干活,动物就朝人走,如果不干活,动物就原路返回。要求动物不能达到人,问人最多能干多少工作。解题报告:首先得到最先到达人的动物的时间,记下这个时间减一记作re,所以人第一次停止工作是在re 1秒的时候。所以,如果re == 0,工作量只能是0.如果re >= t,那人就不用停止工作,工作量最大:t * x。最后,re < t,首先人能工作re的时间,剩下的时间可以认为休息1秒(同时动物往回跑一秒),然后工 阅读全文
posted @ 2011-05-05 15:49 geeker 阅读(205) 评论(0) 推荐(0)