和上一个小国王类似,只不过有一些小的变化

状态表示

f[i][j]表示前i层已经被考虑,第i层的被放置的状态为j的状态的总数。

状态转移

  • 同一行中相邻两位不能同时为1
  • 同一列中相邻两位不能同时为1

初始状态

f[0][0] = 1

终止状态

f[n + 1][0]

#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>using namespace std;const int N = 14, M = 1<<12, mod = 1e8;int n, m;
int w[N]; // 存土地,一个数就存了一行。
vector<int> state;
vector<int> head[M];
int f[N][M];// 看一下是否有两个相邻的一
bool check(int state)
{for (int i = 0; i + 1 < m; i ++ )if ((state >> i & 1) && (state >> i + 1 & 1))return false;return true;
}int main()
{cin >> n >> m;// 读田地的状态,这里为了方便计算,我们// 0表示肥沃,1表示不育for(int i=1; i<=n; i++)for(int j=0; j<m; j++){int t;cin >> t;// 对应位置的土地不育则为1w[i] += !t * (1 << j);}// 处理所有合法状态for(int i=0; i<1<<m; i++)if(check(i))state.push_back(i);// 处理合法状态之间的合法转移for (int i = 0; i < state.size(); i ++ )for (int j = 0; j < state.size(); j ++ ){int a = state[i], b = state[j];if (!(a & b)) // 没有一列同时为1就是合法。head[i].push_back(j);}f[0][0] = 1;// 这个没有上一题复杂,上一个还有一个次数的限制// 枚举每一行for (int i = 1; i <= n + 1; i ++ )// 枚举每个可行状态for (int j = 0; j < state.size(); j ++ )// 如果这个可行状态 和 不育的土地没有同时为1if (!(state[j] & w[i]))// 枚举这个可行状态的可行的转移状态for (int k : head[j])f[i][j] = (f[i][j] + f[i - 1][k]) % mod;cout << f[n + 1][0] << endl;return 0;
}

Dp-状态压缩:玉米田相关推荐

  1. 状态压缩dp打卡——玉米田

    玉米田 思路:和小国王的思路差不多,判断状态,预处理状态,进行转移dp 代码: #include <iostream> #include <vector> using name ...

  2. CCF201409-5 拼图(100分)【插头DP+状态压缩】

    试题编号: 201409-5 试题名称: 拼图 时间限制: 3.0s 内存限制: 256.0MB 问题描述: 问题描述 给出一个n×m的方格图,现在要用如下L型的积木拼到这个图中,使得方格图正好被拼满 ...

  3. DP——状态压缩dp

    状态压缩DP 蒙德里安的梦想 分析题目,当我们先摆横着放的方块,再摆放竖着放的方块,当横着放的小方块摆放完后,竖着放的方块也就确定了,因此总方案数应该等于只放横着的小方块的合法方案数.我们考虑每一列可 ...

  4. AcWing 327 玉米田 题解 (动态规划—DP—状态压缩DP)

    原题传送门 #include<bits/stdc++.h>using namespace std;const int N = 14, M = 1 << 12, mod = 1e ...

  5. HDU 4628 Pieces(DP + 状态压缩)

    Pieces 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4628 题目大意:给定一个字符串s,如果子序列中有回文,可以一步删除掉它,求把整个序列删除 ...

  6. 洛谷1052——过河(DP+状态压缩)

    题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数 ...

  7. 【HDU 4352】 XHXJ's LIS (数位DP+状态压缩+LIS)

    XHXJ's LIS Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  8. [HDU 4842]--过河(dp+状态压缩)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4842 过河 Time Limit: 3000/1000 MS (Java/Others)    Mem ...

  9. 【完全背包】A005_LC_贴纸拼词(dp + 状态压缩)

    我们给出了 N 种不同类型的贴纸.每个贴纸上都有一个小写的英文单词. 你希望从自己的贴纸集合中裁剪单个字母并重新排列它们,从而拼写出给定的目标字符串 target. 如果你愿意的话,你可以不止一次地使 ...

  10. Codeforces 718E.Matvey's Birthday dp+状态压缩

    题意 给定一个长度为n的字符串,字符集大小为8.两个点i,j之间有权值为1的边需要满足以下条件至少一个 1. |i-j|=1 2. si=sj 求图的直径和多少个有序点对之间的最短路长度等于直径 N≤ ...

最新文章

  1. 面试:说说 HTTPS 的工作原理?
  2. maven项目的依赖、继承管理
  3. Bean的生命周期——init-method和destroy-method - 通过让Bean实现InitializingBean,DisposableBean--BeanPostProcessor
  4. 机器学习笔记:线性判别分析(Fisher)
  5. centOS下安装jdk1.8
  6. go设置后端启动_为什么 Rubyists 应该考虑学习 Go
  7. Centos下载离线包、安装离线包、删除现有包、是否安装(rpm)
  8. swag您的装置不支持_新品发布---微机保护装置
  9. js/bat批处理调用谷歌浏览器chrome批量打开网页测试web性能
  10. web前端开发最佳实践_Web开发人员和设计师的最佳黑色星期五优惠
  11. paip.语义分析--单字词形容词表180个
  12. 一个专门下载全球气象站数据的网站(包括中国700多个站)
  13. GameFramework框架 (一) 框架简介
  14. Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level. java.lang.Il
  15. 2022好用的便签记事日程提醒软件有哪些
  16. 多测师肖sir_高级金牌讲师_项目的实战讲解
  17. Ring 4012PLM 打印机驱动
  18. 在macOS上使用LaTeX
  19. App跨平台开发方案与抉择
  20. Maven之聚合与继承

热门文章

  1. 计算机表格用计算公式百分百,excel表格怎么算数据的阳性比率-计算机一级用excel表格计算增长比例该怎么算?...
  2. 鸿蒙系统推送表,【前沿】华为P40首发鸿蒙系统?| 附EMUI 10正式版推送时间表
  3. 单片机计时器100000秒以内
  4. 联想 ThinkPadE480无法调节亮度
  5. Java Stream来写算法01——自幂数(水仙花数)
  6. 手工冰粉社区forum.bingfen.com.cn上线...xiuno模版V2完善记录
  7. linux账号延期,Linux用户密码过期延期
  8. Carsim2016及2019 轨迹跟踪过程中跑直线的解决方案
  9. android2012系统,压倒性份额四核技术 Android系统2012前瞻
  10. 多线程批量获取腾讯云磁盘分区状态