摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4539思路:跟poj1185简直就是如出一辙! 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 int row[111]; 8 int dp[111][222][222]; 9 int s[10){17 cnt++;18 x=x&(x-1);19 }20 return cnt;21 }22 23 int main()24 {25 while(~sca... 阅读全文
posted @ 2013-08-30 20:39 ihge2k 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=1185思路:状态压缩经典题目,dp[i][j][k]表示第i行状态为j,(i-1)行状态为k时最多可以放置的士兵个数,于是我们可以得到递推方程:dp[i][j][k]=max(dp[i][j][k],dp[i-1][k][l]+num[j]);(其中num[j]为该状态下可以放置的士兵的个数。至于具体怎么分析,这位大牛讲的很清楚:http://www.cnblogs.com/scau20110726/archive/2013/02/27/2935256.html 1 #include 2 #include 3 #include 4 阅读全文
posted @ 2013-08-30 19:52 ihge2k 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2167思路:经典的状压dp题,前后,上下,对角8个位置不能取,状态压缩枚举即可所有情况,递推关系是为dp[i][j]=max(dp[i][j],dp[i-1][k]+sum[i][j]),具体的含义见code: 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 int s[1>1))continue;34 if(s[j]&(s[k]<<1))continue;35 ... 阅读全文
posted @ 2013-08-30 16:53 ihge2k 阅读(316) 评论(0) 推荐(0) 编辑