当前位置: 首页 > news >正文

厦门制作公司网站哪家好建筑模板是什么材料

厦门制作公司网站哪家好,建筑模板是什么材料,网站建设叫什么软件,网站主编 做啥本题是状压dp经典题目,很多人都是通过这一题开始对状压dp有所了解。 在进行讲解之前,我们先通过几个问答大致了解状压dp。 一、问答 1. 问题:什么是状压dp? 回答:状压dp即为状态压缩动态规划,何为状态压缩&#x…

本题是状压dp经典题目,很多人都是通过这一题开始对状压dp有所了解。

在进行讲解之前,我们先通过几个问答大致了解状压dp。

一、问答

1.  问题:什么是状压dp?

     回答:状压dp即为状态压缩动态规划,何为状态压缩?怎么进行状态压缩?是个问题。

这个问题涉及到了状压dp的核心思想——把问题的状态压缩成整数,因为整数便于存储和进行状态转移。

2.  问题:状压dp状态的存储形式是?

     回答:前面已经说了,问题的状态应该压缩成整数,但是单纯的10进制整数显然无法满足最小子问题的状态存储,或者说,浪费了很多存储空间。对于最小子问题,一般情况下,只有 1 和 0 两种状态,那么,我们用二进制存储显然更优。

3.  问题:用二进制存储状态只是存储上更优吗?

     回答:不然,二进制天然的位运算可以大大加速状态转移。这也是状压dp不会超时的重要原因。

哈哈,关键词get到了吗?二进制、位运算 ✿✿ヽ(°▽°)ノ✿

二、下面进行例题讲解

        错误思路我就不讲了,因为错误思路千奇百怪,我也是开始就想偏了(我上来就是dp[n][m]一顿转移)。

        首先,我们应该明白的是,我们只能放横着放或者竖着放长方形,一旦横着放的确定了(横着的放法要在合理情况下,总不能让竖的放不了吧O(∩_∩)O ),那么竖着的一定就只有一种可能了,所以,我们只需考虑横着放有多少种合理的放法即可。

下面该怎么做呢?已经焦头烂额了,开始吟唱

对于第 i 列,我们假设 0~ i -1 列的横着放的长方形已经全部放好了,我们都知道,横着放的一定有突出的部分。

就比如说,对于这张图,第 i 列突出的部分是 0、1、3这三个位置,用二进制表示即为101100,对应十进制的44,所以,这个状态就是 f [ i ][ 44 ]

不难发现,第 i 列状态是由第 i-1 列的状态转移过来的

具体来说,f [ i ][ j ] +=所有满足条件的 f[ i-1][ k ] 

要满足什么条件呢?

1. j 和 k不能重叠(显然长方形不能重叠放置,可以重叠的话放法就无穷尽了)

对于这个条件,保证 j&k==0 即可

2. j和k放完之后,第i-1列不能有连续奇数个0(因为这样就放不了竖着的了)

定义isok[ i ]表示 i 的二进制表示是否满足上述条件,isok[ i ] = true表示满足条件,

保证 isok[ j | k ]为 true 即可

三、C++ 代码

#include<bits/stdc++.h>
using namespace std;
const int N = 12, M = 1 << N;
int n, m;
bool isok[M];
long long f[N][M];
int main() {while (cin >> n >> m, n || m) {for (int i = 0;i < 1<<n;i++) {//计算isok[i]isok[i] = true;int cnt = 0;for (int j = 0;j < n;j++) {if (i >> j & 1) {if (cnt % 2)isok[i] = false;cnt = 0;}else cnt++;}if (cnt % 2)isok[i] = false;}memset(f, 0, sizeof f);f[0][0] = 1;for (int i = 1;i <=m;i++) {for (int j = 0;j < 1<<n;j++) {for (int k = 0;k < 1<<n;k++) {if (isok[j | k] && !(j & k)) {//满足两个条件才能转移f[i][j] += f[i - 1][k];}}}}cout << f[m][0] << endl;//代表到 m列且没有突出的情况(列数为0~m-1,m列表示遍历完成了)}return 0;
}

四、结尾

写完再回首,不禁又感叹状压dp的巧妙,如此优雅,妙哉妙哉。

这就是今天要分享的内容,感谢观看!

http://www.yayakq.cn/news/599713/

相关文章:

  • 自己主机做多个网站免费的做网站
  • 微信商城网站怎么做做房地产网站广告销售
  • 北京做手机网站网站开发的教学视频
  • 邦邻网站建设无锡网站建设培训班
  • 集团网站开发多少钱app推广赚佣金
  • 高端网站设计公司排名wordpress表格折叠插件
  • 企业网站推广可以选择哪些方法深圳品牌网站建设公司排名
  • 设计公司企业站网络服务包括哪些
  • 网站工作室南京seo代理
  • 建设营销型网站有哪些步骤建筑施工特种证书查询入口官网
  • 社交网站盈利吗百度官网首页登陆
  • 做网站jw100电脑制作网站总么做
  • 网站幻灯片 字段中国互联网行业的发展趋势
  • 想建网站做优化wordpress做图片站
  • 关于网站建设调查问卷跨境电商平台有哪些营销方式
  • 阿里云服务器 网站东莞seo优化收费
  • 建搜索型网站在深圳如何注册公司
  • 中企动力科技股份有限公司网站官网微信小程序注册申请流程图
  • 襄阳市做网站的公司南昌做网站优化的公司
  • 吴中区两学一做网站建e网app下载
  • 织梦网站支付安装网站怎么重装wordpress
  • 建设网站简单的需要多少天计算机网络编程技术
  • 大连做网站不错的公司成都做网站优化价格
  • wordpress多站点好用吗辽宁建设工程信息网为什么打不开
  • 网站开发手册下载网站的轮播图一般是做多大
  • 服装公司网站设计温猛设计工作室
  • 网站建设补充丽水做网站的公司
  • 宜宾建设教育培训中心网站怎样在百度上发布自己的文章
  • 可以做系统同步时间的网站服饰 视频 网站建设
  • 电商网站建设与管理 教案上海知名seo公司