Monthly Archives: May 2010

POJ 3481 —— Double Queue

这个题目可以有多种做法:基本的堆,建立 2 个堆,一个大顶堆加一个小顶堆,同时更新;还有就是 treap,它是 tree + heap,在本题中将优先级作为 tree 的 key 有序排列。另外再添加一个字段(随机的)作为 treap 中的优先级满足堆的性质。 由于本质是搜索树,由此导致了不同搜索树的比拼:treap,红黑树,伸展树(splay),普通的二叉搜索树等等。 参考: http://www.amoa400.com/oiblog/read.php?30 http://hi.baidu.com/_silen_/blog/item/dd7f7658df9781d69c8204bc.html http://blog.sina.com.cn/s/blog_6114627a0100hpp6.html

Posted in POJ | 1 Comment

一生得失总是零

这个世界上所有的事情,总是有一得必有一失。爱情能够给你欢乐,但它同时也给你痛苦;财富可以给你享受,但它也会带来苦恼;成功使你快乐,但是当失败之后痛苦将变得强烈而无法忍受。 如果你期待某件东西,而你得到了,那是一种快乐。然而相对地,当你失去的时候也会感受到等量的悲伤。得到时是八分快乐,失去也会有八分的痛苦,那个总数几乎是一样的。 有人得到了财富,却可能失去了健康、家庭或感情;而有人在事业和成就少了三分,则在生活质量、身体健康或时间自由方面多得到三分。有些东西看似不公,如果你细想下去,其实是公平的。

Posted in 投资 | Leave a comment

HDU 2388 —— Playground Hideout

http://hi.baidu.com/wswroy/blog/item/23aedf58364d41262834f097.html 最短路。

Posted in POJ | Tagged , | Leave a comment

POJ 1717 —— Dominoes

n 张骨牌,求最小的翻转次数,使得上下之差最小。 f[i] = j 表示在差值为 i 的情况下最小翻转次数为 j。

Posted in POJ | Tagged | Leave a comment

POJ 1745 —— Divisibility

题意:输入 n 个运算数和除数 k, 要求判断这 n 个数通过加减运算后能否整除 k。 样例输入: 4 7 //n , k 17 5 -21 15 //当17 + 5 + -21 - 15 = -14 时能整除k = 7 最多只有 [-k, k] 这么多种情况。

Posted in POJ | Tagged | Leave a comment

POJ 1742 —— Coins

给定 n 种硬币,每种硬币有相应的价值,并且每种硬币有一定的数量。问用这些硬币,可以组合出多少种不同的价值总和。 同样是母函数的应用。

Posted in POJ | Tagged , | Leave a comment

POJ 1170 —— Shopping Offers

一个商店提供多种商品,当用户单独购买商品时有一个价格,当用户组合购买时可以获得优惠,现在提供多种优惠方案和需要购买的物品总数,问最大的优惠是多少。 输入 2 7 3 2 8 2 5 2 1 7 3 5 2 7 1 8 2 10 表示有 2 种商品,编号分别是 7 和 8,分别要购买的数量是 3 和 2,2 和 5 是它们的单件购买价格。 接下来是 2 种优惠。第 1 种优惠有 1 种商品:3 个 … Continue reading

Posted in POJ | Tagged , | Leave a comment

POJ 1157 —— LITTLE SHOP OF FLOWERS

题意:有 f 束花和 v 个花瓶(1

Posted in POJ | Tagged | Leave a comment

POJ 1163 —— The Triangle

基本 DP 问题,滚动数组的又一利用,和那个矩阵下寻找最小路径的比较类似。

Posted in POJ | Tagged , | Leave a comment

POJ 1159 —— Palindrome

题意:输入一串由‘A’到‘Z'和‘0’到‘9’组成的字符串S,要求添加最小的字母,使得S变成回文串。 这个题目有多种做法,应该值得收藏。 思路: <1> (1)求 S 的逆串与原串 S 的最长公共子序列sub; (2)ans = len(S) - len(sub)。 <2> 动态规划,转移方程: dp[i][j] = min(dp[i + 1][j - 1], dp[i][j]) (S[i] == S[j] 1

Posted in POJ | Tagged , , | Leave a comment

POJ 1080 —— Human Gene Functions

两个字符串,其包含的字符分别是 A, C, G, T。可以对它们添加空格来使得它们等长,空格不允许和空格匹配,还有一个矩阵来描述字符匹配对应关系下的得分,现在要使得得分最大。 跟前面谈到的字符串穿插问题类似。

Posted in POJ | Tagged , | Leave a comment

POJ 1485 —— Fast Food

和 POJ 1160 类似

Posted in POJ | Tagged | Leave a comment

POJ 1088 —— 滑雪

基本的 DP 和搜索问题。

Posted in POJ | Tagged | Leave a comment

POJ 1513 —— Scheduling Lectures

有 n 个主题要讲,每堂课时间为 L,每个主题必须得放在一堂课当中,只有在前面的主题讲完之后才能讲后面的主题,针对每堂课有个不满意因子,和这堂课剩余的时间有关,问至少需要几堂课,最小的不满意因子是多少。 至少需要几堂课可以通过贪心来获得,但是为了使得不满意因子最小,则不能通过贪心来获得。比如对 50 30 20 40 30 的序列,可以分为 50 30 和 20 40 30;也可以分为 50 30 20 和 40 30。而前一种方法的不满意因子较小。 设 m[i, j] 表示以前 i 堂课程覆盖 j 个主题的最小不满意因子。DI(x) 表示剩余时间为 x 时的不满意因子。 则 m[i, j] = m[i -1, … Continue reading

Posted in POJ | Tagged | Leave a comment

POJ 3409 —— Broken line

题意,给你 N 条线段,问你是不是形成欧拉回路。 做法就是最简单的并查集判断是否连通,记录所有节点的度。 麻烦的是坐标是250char的整数,并且有前导零。 所以去掉前导零后,字符串哈希一下就OK了。

Posted in POJ | Tagged , | Leave a comment