HDOJ1007-1011

Posted monster5475

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDOJ1007-1011相关的知识,希望对你有一定的参考价值。

最近清明节,回去扫墓了,在回家之前就已经做好了1007-1010的题目。但是1011有点小难,之前虽然是搞懂了,想法也是有了,知道是一个数DP问题,但实际上并没有我想的那么简单。

HDOJ 1007

该题目咋一看蛮复杂的,我一开始还以为是约瑟夫环,后来仔细一看,觉得蛮简单,就是求出给定散点图中距离最小的值为多少,ok,两个for暴力马上就出答案了,然后去ac 一直 ac不过,网上看看了大神,原来是要用分治法。。。好吧,网上代码很全,我就不写了,稍微说一下这个思路吧。如果你是暴力,很明显是O(n^2),如果你用分治法,应该会变成O(nlog(n)),就好像二分法,将点分成两堆,少比了好多好多次。 解题思想,我觉得有篇博客讲的很好了,引用一下。。。https://blog.csdn.net/jkhere/article/details/21597619 

 

ps:原来c++也实现了很多简单算法 在 <algorithm>里,

 

HDOJ 1008

电梯的时间计算,这题算是简单题,基础题,我好像大一的时候就做了,上升a秒,下降b秒,中间停c秒。理清几层 几层之间,到底是算几次a 或者 几次b 就ok

 

HDOJ 1009

属于简单贪心问题,只要用javabean 除以 food 就可以得到一个价值比,即你花了多少事物能获得的javabean,再按照这个value排序,每次都拿价值最高的,这样能保证javabean赚得最多。

 

HDOJ 1010 迷宫问题

这个题目属于常见的迷宫问题,是基本的题目,从出发点出发 广度或者深度 遍历,用递归实现。 应该也可以用栈实现,不过比较麻烦。递归多好。有一个要注意的是这个迷宫有时间规定,就是在指定时间刚好小狗走到门,也相当于步数限定。所以这个题目有一个小陷阱,就是你要剪枝,不然AC不过,怎么剪枝呢?注意到步数的限制,可以在这上面下文章,但我想到的剪枝肯定是最简单的,就是t<(current_x-end_x+current_y-end_y),但这种剪枝方法矬,而且剪不了多少。我也不懂。。 网上查了一下,大家都是用的奇偶剪枝法,原理是蛮简单的,但是你在写程序的时候怎么可能想到@^@。。还是要多加练习。附上一个介绍剪枝地址、https://www.cnblogs.com/zibuyu/archive/2012/08/17/2644396.html

 

HDOJ 1011 动态规划

这个题目有点难,但是看了代码后又觉得蛮简单的,是一个很典型的类似0-1背包的动态规划,只不过的是选择的物体会少一点,因为星级护卫队在去灭虫子的时候是一间房间一间房间的找,不是空降的。具体也不怎么说,是一个蛮简单的动态规划(我写不出来。。。看来得去加强基础)。d[n][m]表示第n间房的时候m个人的时候的最高捕获首领数量。是一层一层刷新的。也就是说 第一层d[1][m]是一直由d[x][m](x>1)影响的。动态转移方程的话在下面的地址中有。。

https://blog.csdn.net/lhshaoren/article/details/7837377

以上是关于HDOJ1007-1011的主要内容,如果未能解决你的问题,请参考以下文章

HDOJ-2037

HDOJ-2048

HDOJ-2047

HDOJ-1263

单调队列(双端队列) poj2823 hdoj3415 hdoj3530

ACM--数学--HDOJ 2086--A1 = ?