搜索
文章平均质量分 84
AndyZhang
一些当前好走的路会越走越窄,而一些当前艰难的路却会越走越宽广。
展开
-
poj1010-STAMPS
题目大意给你一些邮票的面值,然后给你一些顾客给出的价钱,求出邮票的组合来满足每一位顾客,要求是最多四张邮票,每张可以用多次(其实最多也就四次,因为要求最多四张,否则就是none)。如:邮票面值1 2 3 0;0代表这行结束顾客的需求:7 4 0 结果:7 (3): 1 1 2 3 4 (2): 1 3 解释一下:由于每次有多种组合,那么如何取结果呢?如果这些原创 2011-08-14 01:31:36 · 3325 阅读 · 1 评论 -
poj 1190 有些剪枝真是不好想啊。。。
由于深度一定(m),所以使用深度优先搜索,自上而下的设定蛋糕序号,最顶层的为第1层,……,最底层的蛋糕为第m层,很明显满足题目条件的前i层的(从顶层(也就是编号为1的层)开始计数)最小面积mins[i]和体积minv[i]是在该层的半径以及高度都为i时取得,如果采用一般的神搜肯定会超时,所以这题还需要剪枝,剪枝条件有(从m层向上搜,假设前dep层的体积为sumv,面积为sums,当前所得的最小面积原创 2012-04-17 22:34:59 · 707 阅读 · 0 评论 -
poj1564-这样的判重,hash都得折服
由于最多12个数,所以直接暴力搜索就可以。但是关键是如何判断是否重复,这里借鉴一下神奇的判重。就是每次判断和上一层深搜的是否一样,一样的就不再搜 #include #include using namespace std;int t, n;int flag;int a[15],ans[15];void dfs(int now, int sum, int cnt)原创 2012-04-22 11:37:36 · 1302 阅读 · 0 评论 -
poj3009(好久不见)
不知不觉,有两个月没写博客了。惭愧。。。好久不练,果然手生,今天做了一题,搞了一个多小时,各种问题。题目意思很简单,一个图一个起点一个终点,中间有些block阻碍,可以向上下左右扔球,求从起点到终点最少扔多少次。 扔的规则,如果周围靠着阻碍,不能扔,如果没有,那么可以扔,碰到阻碍,阻碍消失,球停在那里。如果那个方向一个阻碍都没有,那么就game over。 最关键是最多扔1原创 2012-10-17 20:59:09 · 1138 阅读 · 0 评论 -
poj3628-DFS/0-1背包-DP/枚举-数据比较弱、方法比较多
因为数据范围20,所以直接枚举是2^20,不会超时。直接求组合就行。在N个数里面取1个数,2个数。。。。N个数,求出一个最小差值就可以了。下面是组合的算法--175MS#include#include #include #include #define nMax 25int N,B;int height[nMax];int ans;int get原创 2012-10-31 23:58:20 · 1501 阅读 · 0 评论 -
poj1655-又是一道简单而又纠结的题目
题目很好理解,就是去掉树上的一个节点,看看剩下的子树中最大的是多少,然后在这些最大值中求一个最小值,如果有多个点都是最小值,那么找一个序号最小的节点。输出节点号,和最小值。 经过简单分析,dfs深度优先搜索可以解决,只需要求出每个节点下子树的总结点个数即可。举例说明:设有一棵树20个节点,其中有一个节点为u,u有两个孩子节点,设u以下有10个节点,两个孩子分别有6和4个节点,那原创 2012-10-25 21:15:18 · 3538 阅读 · 1 评论 -
poj3256-dfs
题目意思比较简单,有K头牛,有N个牧地,这N个牧地有M条单项路,求如果这K头牛要聚餐,可以去的地方有多少个,也就是每头牛都能到的地方有多少个? 分析:开始K头牛在某个牧草地,然后求着K头牛能都到的地方多少个。那我们可以dfs求出每头牛能到的地方,然后枚举N个牧草地,如果有N头牛能到的就是了。。。。 代码:#include #include #include原创 2012-11-11 23:32:23 · 1351 阅读 · 0 评论