摘要:
题目传送门: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># 阅读全文
摘要:
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1565 题目意思就是说给出一个n*n的棋盘,每个位置上有一个非负整数,在上面取不相邻的若干个数,使得和最大。 解法:位运算+dp 因为每行可以取的位置都是一样的,只要两个数不相邻即可。所以可以先对1<<n以内处理,筛除不合法的,优化效率,然后对每行的每一个状态,在上一行合法而且跟本状态不冲突的所有状态中找一个和最大的。本行的本状态的值就是这一行在这个状态下取得的所有数的和+这个最大值。如果是第一行,则上一行的最大值为0; 需要注意的一个地方就是n可能为0,(>_<)我看了d 阅读全文