ACM
文章平均质量分 68
eten
这个作者很懒,什么都没留下…
展开
-
杭电ACM题型分类
注:网上搜的第一篇 1001 这个就不用说了吧1002 简单的大数1003 DP经典问题,最大连续子段和1004 简单题1005 找规律(循环点)1006 感觉有点BT的题,我到现在还没过1007 经典问题,最近点对问题,用分治1008 简单题1009 贪心1010转载 2012-04-09 14:08:56 · 1121 阅读 · 0 评论 -
扔鸡蛋问题详解之深入解析(Egg Dropping Puzzle)
经典的动态规划问题,题设是这样的:如果你有2颗鸡蛋,和一栋36层高的楼,现在你想知道在哪一层楼之下,鸡蛋不会被摔碎,应该如何用最少的测试次数对于任何答案楼层都能够使问题得到解决。如果你从某一层楼扔下鸡蛋,它没有碎,则这个鸡蛋你可以继续用如果这个鸡蛋摔碎了,则你可以用来测试的鸡蛋减少一个所有鸡蛋的质量相同(都会在同一楼层以上摔碎)对于一个鸡蛋,如果其在楼层i扔下的时候摔碎了,对于任何转载 2012-10-16 14:14:58 · 1569 阅读 · 0 评论 -
动态规划算法理论阐述及一个小实例
动态规划问题:用来解决最优化问题基本概念:将一个问题,分解成多个阶段来解决,每一个阶段的决策都依赖于当前的状态,决策过后状态又发生了转移,这种多阶段来解决最优化问题的过程就是动态规划。基本思想与策略:基本思想与分治法类似,也是将带求解的问题分解为若干子问题(动态规划称之为阶段),按顺序求解子问题(子阶段),前一个子问题解,为后一个子问题的求解提供了信息。在求解任一个子问题时,列出各种可能的原创 2012-10-16 13:13:50 · 9181 阅读 · 2 评论 -
一位ACMer过来人的心得
刻苦的训练我打算最后稍微提一下。主要说后者:什么是有效地训练?我想说下我的理解。很多ACMer入门的时候,都被告知:要多做题,做个500多道就变牛了。其实,这既不是充分条件、也不会是必要条件。我觉得一般情况下,对于我们普通学校的大学生,各方面能力的差距不会太大,在这种情况下,训练和学习的方法尤为重要。其实,500题仅仅是一个标志,而且仅仅表示你做ACM-ICPC有一定的转载 2012-10-17 01:15:45 · 898 阅读 · 0 评论 -
LCA问题
最近公共祖先问题 : http://poj.org/problem?id=1330#include #include #include #include using namespace std;/**理解:对于节点 a ,左孩子 b ,右孩子 c1、a与b合并的时候 是当 b 全部遍历完时,遍历不完 不会合并 则此时 b的最近祖先是 b 祖先是运行过程中动态更原创 2012-10-08 16:30:14 · 748 阅读 · 0 评论 -
memset和fill_n的比较
memset和fill_n比較1.memset是对每个字节赋值,而int有4字节(32位)比如这样,memset(a,1,sizeof(a));则a中的每个元素都被赋值成为2进制数为,00000001000000010000000100000001,的数转换成10进制就是16843009所以,一般用memset对数组赋0或-1,赋其他的值就要用循环来实现. 函数名: m转载 2012-10-08 14:15:29 · 1262 阅读 · 0 评论 -
HDU 1232 并查集问题
#include #include using namespace std;#define N 1010int set[N]; //定义并查集大小int height[N]; //定义每个集合树的高度void set_height_init() //初始化并查集,每个节点为一个集合{ int i=1; for(i=1;i<N;i++) s原创 2012-10-05 15:05:37 · 866 阅读 · 0 评论 -
Google面试题:统计1~N中所包含的1的个数
题目:输入:一个正整数N,输出:要求输出从 1 ~ N 中所出现的 1 的个数,如12中所包含的 1 的数为: 1 、10、11、12 总共包含 5个 1 解法1:可以对从1~N的每个数字进行遍历,分别求出每个数字中所包含的1的个数,然后相加求和即可得出最后结果;如下代码:#include using namespace std;int coutOne(unsi原创 2012-10-02 13:37:43 · 2243 阅读 · 0 评论 -
POJ 3283 典型的字典树trie tree 问题
本题是要实现一个倒置的字典树,此处用map来存储键值key以及所对应的权值value,方便搜索;本题有一个需要注意的地方;由于要从后开始向前来建立字典树,尽量使用 栈 stack 来存储 key 值;而不要获取长串在解析串,解析的时候很难解析对,因为里边 或是夹杂多个“空格”,获取其他的字符,考虑不全不可能解出本题,所以要避免;代码如下:#include #include原创 2012-06-11 18:11:40 · 1368 阅读 · 0 评论 -
POJ 3249 拓扑排序+动态规划
该题是让求在一个有向无环图中,从一个入度为 0 的节点出发,到一个出度为 0 的节点的最大的权值问题。我们可以使用广搜,但是会超时,上网查了一下解题报告,可以使用拓扑排序+动态规划来解决此问题:dp[1] = max{ dp[2] + cost[1] , dp[3] + cost[1] };dp[2] = cost[2] + dp[4];dp[3] = cost[3] + dp[4];原创 2012-06-11 13:38:50 · 2860 阅读 · 1 评论 -
最长上升子序列O(n*lg(n))代码
问题描述:所谓子序列,就是在原序列里删掉若干个元素后剩下的序列,以字符串"abcdefg"为例子,去掉bde得到子序列"acfg"现在的问题是,给你一个数字序列,你要求出它最长的单调递增子序列。输入:多组测试数据,每组测试数据第一行是n(1输出:对于每组测试数据输出一行,每行内容是最长的单调递增子序列的长度样例输入:51 2 4 8 1651 10 4转载 2012-06-05 09:39:49 · 1893 阅读 · 0 评论 -
字典树
字典树:又称为Trie,是一种用于快速检索的多叉树结构。Trie把要查找的关键词看作一个字符序列,并根据构成关键词字符的先后顺序构造用于检索的树结构;一棵m度的Trie树或者为空,或者由m棵m度的Trie树构成。特别地:和二叉查找树不同,在Trie树中,每个结点上并非存储一个元素。Trie的查找(最主要的操作)(1)在trie树上进行检索总是始于根结原创 2012-06-01 10:13:02 · 612 阅读 · 0 评论 -
计算机中重要的32个算法[转帖]
奥地利符号计算研究所(Research Institute for Symbolic Computation,简称RISC)做了一个调查,投票选出32个最重要的算法:A* 搜索算法——图形搜索算法,从给定起点到给定终点计算出路径。其中使用了一种启发式的估算,为每个节点估算通过该节点的最佳路径,并以之为各个地点排定次序。算法以得到的次序访问这些节点。因此,A*搜索算法是最佳优先搜索的范例。集转载 2012-10-23 23:04:00 · 1355 阅读 · 0 评论