备战蓝桥杯---状态压缩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;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/504230.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink基本原理 + WebUI说明 + 常见问题分析

Flink 概述 Flink 是一个用于进行大规模数据处理的开源框架&#xff0c;它提供了一个流式的数据处理 API&#xff0c;支持多种编程语言和运行时环境。Flink 的核心优点包括&#xff1a; 低延迟&#xff1a;Flink 可以在毫秒级的时间内处理数据&#xff0c;提供了低延迟的数据…

靶机渗透之My File Server: 1

Name: My File Server: 1Date release: 21 Feb 2020Author: Akanksha Sachin VermaSeries: My File ServerDownload: https://drive.google.com/uc?id1w0grAomPuFaIohBcUwDiI3QIi4fj4kje&exportdownload 对于vulnhub中的靶机&#xff0c;我们都需先下载镜像&#xff0c;然…

【Sora原理与技术实战】Task1 Sora技术原理解析

本笔记来源&#xff1a;开源组织Datawhale24年组队学习 笔记链接&#xff1a;https://datawhaler.feishu.cn/wiki/LxSCw0EyRidru1kFkttc1jNQnnh 直播回看&#xff1a;https://www.bilibili.com/video/BV1wm411f7gf/ For the learner for the dreamer Sora技术原理解析 Sora具体…

vue3 + vite 项目可以使用纯Js开发吗?

答案&#xff1a;可以 创建项目&#xff1a; 按照链接参考或者按官方&#xff1a; webstorm 创建vue3 vite 项目-CSDN博客 项目目录 tsconfig.json 配置允许js allowJs指定是否编译js文件&#xff0c;在任意文件当中,如果我们模块使用js写的&#xff0c;那么我们需要 将all…

java基础-mysql

文章目录 mysql基础面试题什么是mysql什么是事务并发事务带来的影响事物的隔离级别索引大表优化什么是池化思想&#xff0c;什么是数据库连接池&#xff0c;为什么要用数据库连接池⾏锁&#xff0c;表锁&#xff1b;乐观锁&#xff0c;悲观锁MySQL主备同步的基本原理SQL什么情况…

Java | Java中与文件同名的类的构造函数的调用

在Java的学习过程中遇到了这样一段代码&#xff1a; public class Test1 {int a1;public static void main(String []args){System.out.println("java");}public Test1(){System.out.println("构造函数");} }它的运行结果是这样的&#xff0c;构造函数中的…

【kubernetes VPA】记录一次安装 VPA 相关组件的报错解决过程

文章目录 1. 问题描述2. 问题原因3. 解决办法4. 参考链接 1. 问题描述 在执行 ./hack/vpa-up.sh脚本命令时&#xff0c;提示有报错。名为vpa-admission-controller的容器状态一直停留在ContainerCreating&#xff0c;从该Pod详细描述中得知&#xff0c;volume "tls-certs…

面向企业的人脸特效SDK解决方案

随着科技的进步和消费者对高质量体验的需求增加&#xff0c;人脸特效技术已经逐渐渗透到各个领域&#xff0c;包括社交媒体、游戏、广告、影视制作等。为了满足这一需求&#xff0c;美摄科技推出了一款高效、稳定且易于集成的人脸特效SDK解决方案。 美摄科技的人脸特效SDK解决…

自动化测试工具:Python脚本(超详细)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 快速、高效的测试工具及脚本&#xff0c;能使程序猿的开发工作事…

AI时代编程新宠!如何让孩子成为未来的编程大师?

文章目录 一、了解编程的基础概念二、选择适合的编程工具三、激发孩子的兴趣四、注重基础能力的培养五、提供实践机会六、鼓励孩子与他人合作七、持续支持与鼓励《信息学奥赛一本通关》本书定位内容简介作者简介目录 随着科技的迅猛发展&#xff0c;编程已经从一种专业技能转变…

springboot,druid动态数据源切换

关键字&#xff1a;springboot&#xff0c;druid数据库连接池&#xff0c;两个数据源&#xff08;可以切换成多个&#xff09;&#xff0c;事务管理 关于druid简介传送门&#xff1a;https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98 具体分为四…

银行间报价方式

一、对话报价 一方发起&#xff1a;录入 交易前台系统有个窗口&#xff0c;你看就长这个样子。 现券买卖窗口 点右键&#xff0c;出现新对话报价 下面这就是对话报价窗口 【买入】和【卖出】只能点一个。 对手方栏、交易员栏填一个不存在的机构&#xff0c;是填不进去的。…