POJ3254 Corn Fields(状压DP)

[复制链接]
发表于 2022-8-10 12:01:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
dp[j]表示第i行第j个状态时,前i行得到的方案数,该状态可由前一行的状态转移过来。
本题重点在于合法性检测:每一行都用一个二进制数表示,1.二进制数不能有相邻的1;2.要和原地图匹配;3.上下两行不能有冲突。
预处理地图时将0换成1,方便进行2号检测,用位运算&可以实现。
[code] 1 #include 2 #include 3 using namespace std; 4 #define mod 100000000 5 int m,n,top=0; 6 int state[600];//储存合法状态  7 int dp[20][600];//dp[j]表示第i行,第j种编号时,前i行的可行方案数  8 int cur[20]; 9 10 bool check(int x){//有相邻的1则不合法 11     if(x&x
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表