2007年7月26日

zju 1161 Gone Fishing

摘要: 这个题是个经典的贪心题。枚举走过的湖的个数x,最终将在湖x停下来,那么在走路上消耗的时间可以算出来t[1]+t[2]+...+t[n-1],在这个前提下,我们可以从一个湖瞬移到另外一个湖(这个是关键!!!)。为了掉的更多的鱼,我们每次都选择瞬移到与最多的湖去钓5分钟(可以通过优先队列来实现),这样得到的鱼肯定是最多的。我做这个题一开始WA了N次,有下面2点必须要注意:1)对于进入优先队列的比较操作... 阅读全文

posted @ 2007-07-26 21:26 woodfish 阅读(534) 评论(1) 推荐(0) 编辑

2007年7月25日

zju 1410

摘要: 定义一个序列(无限长):11212312341234512345612345671234567812345678912345678910...看出规律来了吗?这个序列是有长度为1,2,3...k...的子序列Sk构成的,而Sk为1到k之间的数构成的。现在给定一个数i,要求出这个序列中的第i个数 1#include using namespace std;int main( ) { int ... 阅读全文

posted @ 2007-07-25 20:49 woodfish 阅读(327) 评论(1) 推荐(0) 编辑

zju 1060 拓扑排序

摘要: 刚看这题感觉是个排序网络,然后就去翻组合数学中的排序网络一章,看了半天感觉对这题没什么作用,后来再把题目一看,发现就是个图论的问题。假设有关系AB,这样要判断所有的关系是否能够给出最后的元素的序,就只需要对该图进行拓扑排序,如果该图存在环,那么给定的关系肯定是互相矛盾的。如果不存在环,但是拓扑排序出来的序列中元素的个数不完整(入度为0的节点的个数大于1),那么给出的关系不足以判断出最后的大小关系。... 阅读全文

posted @ 2007-07-25 14:13 woodfish 阅读(541) 评论(0) 推荐(0) 编辑

2007年7月23日

zju上面终于AC了220+题,发图纪念一下

摘要: 远远不够啊,还要继续努力学习,提高能力啊!!!! AC了224题: 阅读全文

posted @ 2007-07-23 22:42 woodfish 阅读(250) 评论(0) 推荐(0) 编辑

最长单调子序列的nlogn算法

摘要: 可以参考一下ZOJ-1986 这题目。 http://acm.zju.edu.cn/show_problem.php?pid=1986 先回顾经典的O(n^2)的动态规划算法,设A[t]表示序列中的第t个数,F[t]表示从1到t这一段中以t结尾的最长上升子序列的长度,初始时设F [t] = 0(t = 1, 2, ..., len(A))。则有动态规划方程:F[t] = max{1, F[j] ... 阅读全文

posted @ 2007-07-23 22:39 woodfish 阅读(2671) 评论(2) 推荐(0) 编辑

2007年7月21日

zoj 1141 Closest Common Ancestors

摘要: 就是求最小公共祖先求最小公共祖先有脱机和在线两种算法,>中有介绍,这题我用的是脱机最小公共祖先算法,速度快些。求脱机最小公共祖先算法用到了并查集 ,算法描述如下:LCA(u) MAKE-SET(u) ancestor[FIND-SET(u)] 1 #include 2 #include 3 using namespace std; 4 5 #define BLACK tru... 阅读全文

posted @ 2007-07-21 16:37 woodfish 阅读(525) 评论(0) 推荐(0) 编辑

动态规划算法

摘要: 动态规划是本书介绍的五种算法设计方法中难度最大的一种,它建立在最优原则的基础 上。采用动态规划方法,可以优雅而高效地解决许多用贪婪算法或分而治之算法无法解决的问题。在介绍动态规划的原理之后,本章将分别考察动态规划方法在解决 背包问题、图象压缩、矩阵乘法链、最短路径、无交叉子集和元件折叠等方面的应用。 3.1 算法思想 和贪婪算法一样,在动态规划中,可将一个问题的解决方案视为一系列决策的结果。不同的... 阅读全文

posted @ 2007-07-21 14:01 woodfish 阅读(8228) 评论(1) 推荐(0) 编辑

2007年7月20日

Topcoder SRM 358:SharksDinner

摘要: 有一些鲨鱼要进行晚餐,他们要互相吃对方。每个对于都有一个尺寸size,速度speed,和智力intelligence。鲨鱼A能够吃鲨鱼B当且进当A的size,speed,intelligence都大于或者等于B鲨鱼的。并且每个鲨鱼最多能够吃2个其它的鲨鱼。现在给定int[] size, int[] speed and int[] intelligence,要求出最后存活的鲨鱼的最小数量。分析:要求... 阅读全文

posted @ 2007-07-20 21:34 woodfish 阅读(282) 评论(0) 推荐(0) 编辑

Topcoder SRM 358:BalanceScale

摘要: 现在有n件物品集合V,每件有一个重量Wi,现在要从里面选出一个集合S,使得V-S中的物品都能由S中的物品称出来,即在一个天平的的左边放入V-S中的1件物品,那么必定可以从S中选出一些物品(可以无限使用)放在右边,使得天平平衡。现在要求集合S中元素个数的最小值。现在,我们先求出Wi(i=1,2,3...n)的最大公倍数g,然后把每个Wi都除以g,这样gcd(Wi)=1,这样并不会影响最后的结果。现在... 阅读全文

posted @ 2007-07-20 20:20 woodfish 阅读(365) 评论(0) 推荐(0) 编辑

Topcoder SRM 358:SameDigits

摘要: 定义一个函数f(n)表示中最长的一个序列,这个序列有相同的数字组成。比如f(344488)=3,f(123)=1现在给定两个整数n,k要求出有多少个数x,满足x的位数不大于n且f(x)=k.由于结果会很大,只用求出结果mod 44444444的值就可以了。先考虑有多少个n位数x,满足f(x)=k.我们从左往右来天数,需要记录的状态信息是:1)有多少位数字要填2) 此前填的数字末尾有多少位是相同的... 阅读全文

posted @ 2007-07-20 19:55 woodfish 阅读(283) 评论(0) 推荐(0) 编辑

导航