#10172. 「一本通 5.4 练习 1」涂抹果酱 题解

题目链接

一道三进制状压的好题。

题目描述:

 

Tyvj 两周年庆典要到了,Sam 想为 Tyvj 做一个大蛋糕。蛋糕俯视图是一个 N×M的矩形,它被划分成 
N×M个边长为 1×1的小正方形区域(可以把蛋糕当成 N 行 M 列的矩阵)。
蛋糕很快做好了,但光秃秃的蛋糕肯定不好看!
所以,Sam 要在蛋糕的上表面涂抹果酱。果酱有三种,分别是红果酱、绿果酱、蓝果酱,
三种果酱的编号分别为
1,2,3.为了保证蛋糕的视觉效果,Admin 下达了死命令:
相邻的区域严禁使用同种果酱。但 Sam 在接到这条命令之前,
已经涂好了蛋糕第 KKK 行的果酱,且无法修改。 现在 Sam 想知道:能令 Admin 满意的涂果酱方案有多少种。请输出方案数 mod
1e6。若不存在满足条件的方案,请输出 0

 

输入格式

输入共三行。
第一行:N,M
第二行:K
第三行:M 个整数,表示第 行的方案。
字母的详细含义见题目描述,其他参见样例。

输出格式

输出仅一行,为可行的方案总数。

样例

样例输入

2 2 
1 
2 3

样例输出

 3 

解题思路:

这道题关键在判断合法情况,第k行特判一下即可。

1.判断一个三进制数是否有相同数字相邻的情况,不能模拟二进制左移右移的情况,

因为这里有3个数字,左移右移会出现有0的影响。

2.判断不同行是否有相同数字相邻,模拟二进制的&判断一下即可。

代码:

 

#include<bits/stdc++.h>
#define ll long long 
#define R register
using namespace std;
int  n,m,k,mod=1e6,a[250],sk,num,top,ans,f[10005][250];
inline int ksm(R int x,R int p)
{R int tot=1;while(p){if(p&1){tot=tot*x;}x=x*x;p>>=1;}return tot;
}
inline int check(R int x,R int y)
{for(R int i=1;i<=m;++i){if((x%3)==(y%3))return 0;x/=3;y/=3;}return 1;
}
inline int judge(R int x)
{R int y=-1;for(R int i=1;i<=m;++i){    if(y==x%3)return 0;y=x%3;x/=3;}return 1;
}
inline void init()
{for(R int i=0;i<=242;++i){R int x=i,tot=0;while(x){x/=3;++tot;}if(tot>=m+1)break;if(judge(i)){    a[++num]=i;    if(i==sk)top=num;}}
}
int main(){scanf("%d%d",&n,&m);scanf("%d",&k);for(R int i=1;i<=m;++i){R int t;scanf("%d",&t);sk+=(t-1)*ksm(3,i-1);}if(!judge(sk))    {printf("0");return 0;}init();if(k==1)f[1][top]=1;elsefor(R int i=1;i<=num;++i)f[1][i]=1;for(R int i=2;i<=n;++i)//当前第几行
    {if(i==k){for(R int t=1;t<=num;++t)if(check(a[top],a[t]))f[i][top]=(f[i][top]+f[i-1][t])%mod;}else{for(R int j=1;j<=num;++j)//当前行状态
            {if(i-1==k){if(check(a[j],a[top]))f[i][j]=(f[i][j]+f[i-1][top])%mod;}else{for(R int t=1;t<=num;++t)//上一行状态if(check(a[j],a[t]))f[i][j]=(f[i][j]+f[i-1][t])%mod;}}}}for(R int i=1;i<=num;++i)ans=(ans+f[n][i])%mod;printf("%d",ans%mod);return 0;
}

 

这道题关键在于舍弃不合法情况的判断.

 

 

转载于:https://www.cnblogs.com/sky-zxz/p/9865604.html

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

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

相关文章

全国计算机等级考试题库二级C操作题100套(第89套)

第89套&#xff1a; 给定程序中&#xff0c;函数fun的功能是:求出形参ss所指字符串数组中最长字符串的 长度&#xff0c;其余字符串左边用字符*补齐,使其与最长的字符串等长。字符串数组中共 有M个字符串&#xff0c;且串长<N。 请在程序的下划线处填入正确的内容并把下划线…

Android 调用相册 拍照 实现系统控件缩放 切割图片

android 下如果做处理图片的软件 可以调用系统的控件 实现缩放切割图片 非常好的效果 今天写了一个demo分享给大家。 package cn.m15.test;import java.io.ByteArrayOutputStream; import java.io.File; import android.app.Activity; import android.content.Intent; import a…

全国计算机等级考试题库二级C操作题100套(第88套)

第88套&#xff1a; 函数fun的功能是&#xff1a;把形参a所指数组中的最大值放在a[0]中&#xff0c;接着求出a所指数组中的最小值放在a[1]中&#xff1b;再把a所指数组元素中的次大值放在a[2]中&#xff0c;把a数组元素中的次小值放在a[3]中&#xff1b;其余以此类推。例如:若…

75: libreoj #10028 双向宽搜

$des$ 实现一个bfs $sol$ 写了一个双向bfs #include <bits/stdc.h>using namespace std;#define Rep(i, a, b) for(int i a; i < b; i )#define gc getchar() inline int read() {int x 0; char c gc;while(c < 0 || c > 9) c gc;while(c > 0 &&…

《MS SQL Server 2000管理员手册》系列——8. 管理 Microsoft SQL Server 服务

8. 管理 Microsoft SQL Server 服务SQL Server 服务组件 使用SQL Server服务管理员使用 Windows 2000 服务控制管理员使用 SQL Server Enterprise Manager本章总结当您安装好 Microsoft SQL Server 2000 之后就可以开始执行了。在使用Microsoft SQL Server 2000 存取数据前&…

中的 终端报错怎么看原因_《琅琊榜》中太子被封禁,高湛引皇上看桂花的真正原因是什么?...

《琅琊榜》中&#xff0c;高湛是一个非常经典的角色&#xff0c;他比夏江更懂梁帝的心&#xff0c;或者说&#xff0c;知梁帝者&#xff0c;莫过于高湛。当然&#xff0c;若不是如此&#xff0c;高湛也不能在梁帝身边待了那么些年。梁帝生病&#xff0c;喝下静妃娘娘配制的甜汤…

js获取当前域名、Url、相对路径和参数以及指定参数

用 Javascript 可以单独获取当前域名、Url、相对路径和参数&#xff0c;所谓单独攻取&#xff0c;即域名不包括网页文件的路径和参数、参数不包括域名和网页文件路径&#xff0c;下面分别介绍。 一、js获取当前域名有2种方法 1、方法一 var domain document.domain; 2、方法二…

STM32安装Keil5、芯片支持包、startup启动文件(启动过程、冷热启动)、建立工程、ST-LINK烧写步骤

参考&#xff1a;stm32入门之keil5的安装以及第一个工程的建立 作者&#xff1a;SKY丶丿平才 发布时间&#xff1a; 2020-12-06 17:08:30 网址&#xff1a;https://blog.csdn.net/weixin_48264057/article/details/110734596 目录使用的STM32F103C8T6一、Keil5的下载与安装1.下…

深度学习都是非凸问题_神经网络的损失函数为什么是非凸的?

Ian Goodfellow曾经给在quora回答过&#xff0c;以下是原文&#xff1a;There are various ways to test for convexity.One is to just plot a cross-section of the function and look at it. If it has a non-convex shape, you don’t need to write a proof; you have dis…

针对移动互联网应用的网络建设和优化

为什么80%的码农都做不了架构师&#xff1f;>>> 针对移动互联网应用的网络建设和优化 截至2013年3月,移动互联网的人均上网时长和PC互联网相比差距已经扩大了29%.PC互联网向移动端迁移的趋势进一步凸显.小米是一家专注于iPhone和Android等新一代智能手机软件…

STM32F103实现点灯(寄存器方式)

参考&#xff1a;STM32F103系列最简易版点灯程序 作者&#xff1a;一只青木呀 发布时间&#xff1a;2020-10-21 11:40:38 网址&#xff1a;https://blog.csdn.net/weixin_45309916/article/details/109196950 目录硬件软件点灯流程使能GPIO端口E和B对应的时钟找到GPIO对应的时钟…

rocketmq 消费方式_RocketMQ事务消费和顺序消费详解

一、RocketMq有3中消息类型1.普通消费2. 顺序消费3.事务消费顺序消费场景在网购的时候&#xff0c;我们需要下单&#xff0c;那么下单需要假如有三个顺序&#xff0c;第一、创建订单 &#xff0c;第二&#xff1a;订单付款&#xff0c;第三&#xff1a;订单完成。也就是这个三个…

列出我所知道的图像处理库

&#xff11;&#xff0e;对OpenCV的印象&#xff1a;功能十分的强大&#xff0c;而且支持目前先进的图像处理技术&#xff0c;体系十分完善&#xff0c;操作手册很详细&#xff0c;手册首先给大家补计算机视觉的知识&#xff0c;几乎涵盖了近10年内的主流算法&#xff1b;然后…

GPIO输入输出模式原理(八种工作方式附电路图详解)

这几篇博文讲的不错&#xff0c;可参照着理解&#xff1a; STM32下拉输入模式与振动传感器的使用 “上拉电阻与下拉电阻”通俗解读 上、下拉电阻&#xff08;定义、强弱上拉、常见作用、吸电流、拉电流、灌电流&#xff09; 个人总结&#xff1a; 模拟量选浮空输入&#xff0c…

webpack打包后引用cdn的js_利用CDN加速react webpack打包后的文件详解

此文不介绍webpack基本配置&#xff0c;如果对基本配置有疑问请查阅官方文档。1、配置webpack.config.js将output.publicPath改成上传到的cdn地址, 例(对应上面上传配置)&#xff1a;publicPath: "https://your_base_cdn_url" process.env.NODE_ENV "/cdn/&qu…

STM32F103构建固件库模板(PS固件库文件树介绍)

参考&#xff1a;STM32F103ZE新建固件库模板 作者&#xff1a;追兮兮 发布时间&#xff1a;2020-10-14 10:31:45 网址&#xff1a;https://blog.csdn.net/weixin_44234294/article/details/109065495 参考博文&#xff1a;https://blog.csdn.net/visual_eagle/article/details/…

java ee 中文乱码的问题

java ee 中文乱码的问题发生中文乱码的三种情况(一) 表单formPost 方法直接在服务器中设置request.setCharacterEncoding("utf-8");get方法 自己转码,下面是方法.public class HuanMa{public static String getUTF8(String str){String s"";try {s new St…

深度相机 物体三维重建_基于深度相机进行室内完整场景三维重建的方法及系统_2017100513665_说明书_专利查询_专利网_钻瓜专利网...

S121&#xff1a;采用Kintinuous框架&#xff0c;进行视觉里程计估计&#xff0c;得到每帧深度图像下的相机位姿信息。S122&#xff1a;根据相机位姿信息&#xff0c;将由每帧深度图像对应的点云数据反投影到初始坐标系下&#xff0c;用投影后得到的深度图像与初始帧的深度图像…

STM32F103实现点灯(固件库方式)

参考&#xff1a;stm32上实现点灯 作者&#xff1a;SKY丶丿平才 发布时间&#xff1a; 2021-03-20 16:51:06 网址&#xff1a;https://blog.csdn.net/weixin_48264057/article/details/115028724 目录前言一、硬件设计二、软件设计1.建立工程2.代码编写三、实际验证1.烧写程序2…

strtus2.3 java.lang.NoSuchFieldException: DEFAULT_PARAM

strtus2.3.15.1 的bug请下载 http://download.csdn.net/detail/livalue/6229373 或加群到群共享中下载.214579879