摘要: 题目传送门:http://poj.org/problem?id=1564 http://acm.hdu.edu.cn/showproblem.php?pid=1258 解法:深搜+判重 n<=12直接深搜也不会超时,而且数据较弱。题目意思说每个加法中的数字可以出现的次数不能多于原来list里面的数字。但是可能出现一样的加法式子。比如样例中的4 6 4 3 2 2 1 1,如果直接深搜就会出现两个3+1和两个2+1+1,所以加一个判断重复就可以了。类似的搜索还可以采用状态压缩的解法,效率更快。#include <iostream>#include <cstdio># 阅读全文
posted @ 2011-08-24 10:47 like@neu 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1565 题目意思就是说给出一个n*n的棋盘,每个位置上有一个非负整数,在上面取不相邻的若干个数,使得和最大。 解法:位运算+dp 因为每行可以取的位置都是一样的,只要两个数不相邻即可。所以可以先对1<<n以内处理,筛除不合法的,优化效率,然后对每行的每一个状态,在上一行合法而且跟本状态不冲突的所有状态中找一个和最大的。本行的本状态的值就是这一行在这个状态下取得的所有数的和+这个最大值。如果是第一行,则上一行的最大值为0; 需要注意的一个地方就是n可能为0,(>_<)我看了d 阅读全文
posted @ 2011-08-24 09:33 like@neu 阅读(274) 评论(0) 推荐(0) 编辑