搜索-剪枝
heben99
这个作者很懒,什么都没留下…
展开
-
usaco 4.1 Fence Rails 剪枝
多维背包问题,不能用dp,因为n 1)对rail和board排序,对于不同长度的rail,一定是取长度小的rail比较划算,所以我们取前k个rail处理这里 sum(rail,k) sum(board) 2)充分利用题目条件:因为每个rail最长只有128,而rail可能会有1000,所以肯定有很多rail的长度相等,对于这些rail,我们只需要枚举一个下界即可,这样可以免去很多重原创 2008-08-21 13:27:00 · 1157 阅读 · 0 评论 -
usaco 4.1 Cryptcowgraphy 剪枝
这道题目需要大量优化,要用到ELFhash字符串哈希,空间不能开太大,否则会很慢,但是在我的机器上试,空间不影响速度,有可能是因为usaco服务器的问题总结一下错误的地方1)下标错误:把c,o,w搞混了2)边界错误:对于字符数组,需要判断0 优化措施总结如下1)字符串的字符个数应该等于(目标字符串的长度)+3*k。如果不满足就可直接判断无解。 2)除了COW三个字符外,其他的字符的个原创 2008-08-21 22:55:00 · 970 阅读 · 0 评论 -
usaco 4.3 Letter Game 搜索
搜索题目,状态很多,需要优化:1.优化搜索顺序:先确定对角线,因为对角线对行列的影响最大。然后每次选取已确定数字个数最多的行列进行枚举,这样最省时间2.合理设计数据结构:假设我们需要迅速查找到第一位和第五位分别为1,3的素数集合,该如何处理?预处理是搜索问题优化的好方法,可以在搜索前将各种需要枚举的素数集合分别存起来,这样速度将会快很多3.如果某行或者某列已经有四个数确定了,那么第五个数可以直接原创 2008-08-25 13:55:00 · 564 阅读 · 0 评论 -
usaco 4.3 Letter Game 搜索
简单搜索题,几乎不需要优化,直接枚举一个或者两个单词,判断其组成字符的个数是否小于给定串对应的字符个数,满足则更新答案。搜索过程中如果需要单词里的字符不再给定串里,则提前跳出。 /*PROG: lgameLANG: C++ID: heben991*/#include #include using namespace std;const原创 2008-08-24 09:36:00 · 493 阅读 · 1 评论