摘要: POJ 1185 炮兵阵地核心算法:dp状态压缩中文题分析:graph[i]存储第i行的地形,用一二进制数表示,山地对应位置为1,平地对应位置为0leg[N]中存放所有能够合法的单行安排状态,用二进制数表示,驻兵对应位置为1,不驻兵对应位置为0dp[i][j][k]表示第i行状态为j,i-1行状态为k时最多的哨兵数目,j,k均对应leg[]中状态dp[i][cur][p1] = getmax(dp[i][cur][p1],dp[i-1][p1][p2]+leg[cur].army);其中: p1为第i-1层的合法行存放状态 p2为第i-2层的合法行存放状态, cur为当前即第i层合法行存放状态 阅读全文
posted @ 2011-01-28 21:01 AndreMouche 阅读(813) 评论(0) 推荐(0) 编辑
摘要: HDU 1074 Doing Homework算法核心:状态压缩DP大意:有n门课程作业,每门作业的截止时间为D,需要花费的时间为C,若作业不能按时完成,每超期1天扣1分。这n门作业按课程的字典序先后输入问完成这n门作业至少要扣多少分,并输出扣分最少的做作业顺序PS:达到扣分最少的方案有多种,请输出字典序最小的那一组方案分析:n#include#includeconstint N =65536;struct node{ int cost;//所需要的时间int pre;//前一状态int reduced;//最少损失的分数}dp[N];//dp[i][j]表示在第i天完成作业信息为jbool. 阅读全文
posted @ 2011-01-28 14:21 AndreMouche 阅读(2206) 评论(0) 推荐(0) 编辑