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

备战蓝桥杯---状态压缩DP进阶题1

我们来看一看一道比较难的问题(十分十分的巧妙):

显然我们应该一行一行放,又竖的会对下一行产生影响,我们令横着放为0,竖着放的上方为1.

对于下一行,前一行放1的下面为0,但是会出现这么个情况:

10001,这3个0可能是竖着放的下方,也可以是一个横放+1个竖着放的下方,而对于000下面的一定不能是3个0,只可以是100或001或111.

综上,我们可以得到如下规则:

1.st&st'!=0是不可能的。

2.我们在忽略竖的0下不能有连续奇数的0.

显然,对于一个01矩阵,它与1种方案是一一映射的。

有了这两个规则,我们求的就是最后一行全为0的方案数。

但是,对于验证第二个规则比较麻烦,我们如何用二进制的性质来化简呢?

我们假设上一行为st1,本行为st2,我们取反st1,让他-st2,这样子我们就把竖的0忽略了。

我们只要计算是否有奇数的连续的1即可。

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
int n,m;
long long dp[15][3000];
bool lian(int x){int cnt=0;int q=m;while(q--){if(x&1) cnt++;else{if(cnt%2==1) return 1;cnt=0;}x>>=1;}return cnt%2;
}
int main(){while(cin>>n>>m){if(n==0&&m==0) break;if(n*m%2) {printf("0\n");continue;}memset(dp,0,sizeof(dp));for(int i=0;i<=(1<<m)-1;i++){if(lian((~0)-i)==1) continue;dp[1][i]=1;}for(int i=2;i<=n;i++){for(int j=0;j<=(1<<m)-1;j++){for(int k=0;k<=(1<<m)-1;k++){if(k&j) continue;if(lian((~k)-j)==1) continue;dp[i][j]+=dp[i-1][k];}}}cout<<dp[n][0]<<endl;}
}

相关文章:

  • qsort使用
  • 数据库-第二/三章 关系数据库和标准语言SQL【期末复习|考研复习】
  • Springboot+vue的商业辅助决策系统的设计与实现(有报告)。Javaee项目,springboot vue前后端分离项目
  • 微信小程序自制动态导航栏
  • GNER: 生成式实体识别的新 SoTA
  • 数据结构实现-线性表
  • Javaweb之SpringBootWeb案例之自动配置的原理分析的详细解析
  • Flink基本原理 + WebUI说明 + 常见问题分析
  • element-plus表格合并
  • C 基本语法
  • C#双向链表实现:Append()方法追加并显示数据
  • 【k8s管理--两种方式安装prometheus】
  • 【Linux杂货铺】调试工具gdb的使用
  • 基于ZYNQ的PCIE高速数据采集卡的设计(一)
  • 【UE 材质】冰冻效果
  • [Vue CLI 3] 配置解析之 css.extract
  • [译] 怎样写一个基础的编译器
  • 08.Android之View事件问题
  • 10个确保微服务与容器安全的最佳实践
  • HTTP 简介
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • JSONP原理
  • JS数组方法汇总
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • Python中eval与exec的使用及区别
  • Redis 中的布隆过滤器
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 安卓应用性能调试和优化经验分享
  • 大整数乘法-表格法
  • 分布式熔断降级平台aegis
  • 解决iview多表头动态更改列元素发生的错误
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 聊聊sentinel的DegradeSlot
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 一个项目push到多个远程Git仓库
  • - 转 Ext2.0 form使用实例
  • 整理一些计算机基础知识!
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • #单片机(TB6600驱动42步进电机)
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (十一)手动添加用户和文件的特殊权限
  • *2 echo、printf、mkdir命令的应用
  • ../depcomp: line 571: exec: g++: not found
  • .NET Core 将实体类转换为 SQL(ORM 映射)