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

政府网站建设预算高端网站建设南宁

政府网站建设预算,高端网站建设南宁,seo金融术语,怎样做免费外贸网站本题是状压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.mmbaike.com/news/86293.html

相关文章:

  • 2022年世界职业技能大赛国内专业的seo机构
  • 网站建设咨询html期末大作业个人网站制作
  • 沈阳网站建设百度163黄页关键词挖掘
  • 建盏公司最新消息广州seo软件
  • 自己做的网站打开是乱码北京网络营销外包公司哪家好
  • 涟源网站设计郑州seo外包
  • 做网站的经验河南网站建设
  • 做图素材网站哪个好搜索引擎营销的主要模式
  • 鄂州网站建设哪家专业个人怎么做免费百度推广
  • 怎么做网站外链网络运营推广怎么做
  • 鬼佬做爰网站站长之家怎么用
  • 报名网站辽宁省建设银行网站做优化
  • 五莲网站建设今日头条郑州头条新闻
  • 做单页网站价格seo秘籍优化课程
  • 山东做网站建设公司产品营销策划方案3000字
  • 城市建设鹤岗市网站上海谷歌seo
  • 金堂县建设局网站百度pc网页版登录入口
  • 天眼查官网查询企业合肥seo网站建设
  • 青岛专业做商业房的网站贴吧高级搜索
  • cpa推广做网站成都网站优化排名推广
  • 做网站一定需要icp么厦门人才网官网登录
  • 网站编辑器做段落空格最新网络营销方式
  • 太仓公司做网站项目推广网站
  • 网络服务与协议课件seo的优化技巧有哪些
  • 普洱市网站建设制作怎样做搜索引擎推广
  • 天河公司网站建设公司百度关键词价格
  • sqlite做网站郑州seo排名第一
  • 在线平台教育网站开发seo黑帽技术有哪些
  • app下载平台服务好搜自然seo
  • 长沙知名网站seo网站外包公司