ZOJ_1093(Monkey and Banana)
摘要:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1093记得暑假时看过这道题,但是昨天上ZOJ想找DP题,发现手册上的第一道DP水题——也就是这道1093居然没有AC掉,所以就想着再做一下,结果真的对DP没感觉,居然没做出来,今天早上想了好久还是没有做对,最后看了下大牛的思路,终于A掉了。这种算法不是很给力,但是容易些。这道题就是砌砖,要求上面的砖比下面的小(长和宽),给你n块砖,找出能砌的最大高度。先贴下代码:#include<stdio.h>#include<stdlib.h>typedef
阅读全文
posted @
2011-09-29 10:58
找回失去的
阅读(559)
推荐(1)
hdu_1690 (第一次做最短路)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1690 这个题把我搞抑郁了,并不是因为它难,而是自己的细节错误(近乎弱智),致使程序一直在出错。先说下题意,这道题是比较典型的最短路问题,求两点间的最短距离然后输出交通所需的费用。我参考的是Staginner的思路,也邪恶的参考的他的代码(我毕竟才第一次做这个,连dijkstra算法都不会)。PS:他写得还是很不错的,先把代码贴出来:注释是我的理解。这个算法在我看来是蛮耗时的,有O(N^3),但是不难理解,就是三层循环不断更新i与j点的最小费用,最后得出真正意义的最小费用就OK了,但是开始我也没想到这...
阅读全文
posted @
2011-09-27 23:33
找回失去的
阅读(477)
推荐(1)
hdu_1233(最小生成树)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1233这道题是昨天那道畅通工程的升级题,用了最小生成树的思想,我是参考白书上的kruskal代码做了这道题(PS:白书果然 是王道!)。首先并查集是必不可少的,将两点之间的连线看成边,这次不仅要将并查集初始化,还要初始化边的序号,用数组r来存储边的序号,题目要求有m=n*(n-1)/2条路。我们用u[i],v[i],w[i],分别表示两个端点的序号,以及两点间的距离,然后根据w[i]给边间接排序(排序的对象是边的序号,而不是边的长度)。下一步就是在所有集合由距离的小到 大连接起来。下面是代码:#include
阅读全文
posted @
2011-09-26 00:23
找回失去的
阅读(467)
推荐(0)
好吧,第一次用并查集(hdu_1232)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1232这并不是道难题,开始不会用并查集,把题目想得难了!这道题目是要我们求出要建的道路的最少条数,就是先把之前有连通的点归到一个集合中,然后每次输入两点的时候就将两个点所属的集合并成一个集合,然后用许多个不相交的集合来表示这些点的连通情况。而并查集的优点就是用树来表示集合。每棵树表示一个集合,因此树的形态无关紧要,把遍历过的结点都改成树根的儿子就行了。贴下我的代码:#include <stdio.h>int A[1050];/* 找x所在的树根,一层一层找 */int find(int x){ r
阅读全文
posted @
2011-09-24 23:30
找回失去的
阅读(241)
推荐(1)
HDU 1717(sscanf的应用)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1717这道题的解题思路十分巧妙,开始一直没想到分数是怎么从小数来的,后面参考了一些大牛的思路,让我豁然开朗,这确实很值得学习。以下的思路描述摘自hello kity的博客(她确实用了这个博客名称.^_^.,这题她描述写的比较好)首先跟你一个小数 令X= 0 . s1 s2 ..sn ( y1 y2 y3..ym ) 这样的话我们把小数点分为三个部分,分别用三种颜色标记了!我们可以把表达式转换成:X * 10 ^n=s1s2..sn+0.y1y2..ym; 我们用S1替换 s1s2..sn ,Y替换 0.(y1
阅读全文
posted @
2011-09-22 10:14
找回失去的
阅读(808)
推荐(0)