涂抹果酱

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

------------------------------------------------------------------------------------------------------------------------------

状态压缩动态规划

三进制状态压缩,转移方程式很简单,问题只是处在三进制的处理!

------------------------------------------------------------------------------------------------------------------------------

 1 #include<bits/stdc++.h>
2 using namespace std;
3
4 int nn,n,m,k,sk;
5 long long f[10010][1<<5+5];
6 int st[1<<5+5],js;
7 int maxm=1;
8
9 void getst()
10 {
11 for(int i=0;i<m;++i)maxm*=3;
12 for(int ii=0;ii<maxm;++ii)
13 {
14 int i=ii,bz=1;
15 int pre=-1;
16 for(int cur,j=0;j<m;++j)
17 {
18 cur=i%3;
19 if(cur==pre){
20 bz=0;
21 break;
22 }
23 pre=cur;
24 i/=3;
25 }
26 if(bz)st[js++]=ii;
27 }
28 }
29 bool bj(int x,int y)
30 {
31 x=st[x];y=st[y];
32 for(int i=0;i<m;++i)
33 {
34 int xx=x%3,yy=y%3;
35 if(xx==yy)return 0;
36 x/=3;y/=3;
37 }
38 return 1;
39 }
40 void dp()
41 {
42 for(int i=0;i<js;++i)f[1][st[i]]=1;
43 for(int i=2;i<=nn;++i)
44 {
45 for(int s=0;s<js;++s)
46 {
47 for(int ss=0;ss<js;++ss)
48 if(bj(ss,s))f[i][st[s]]=(f[i][st[s]]+f[i-1][st[ss]])%1000000;
49 }
50 }
51 }
52 int main()
53 {
54 scanf("%d%d%d",&n,&m,&k);
55 for(int tp,i=0;i<m;++i)
56 {
57 scanf("%d",&tp);tp--;
58 sk=sk*3+tp;
59 }
60 getst();
61 nn=max(k,n-k+1);
62 dp();
63 cout<<f[k][sk]*f[n-k+1][sk]%1000000;
64 return 0;
65 }

loj10172的更多相关文章

  1. Loj10172 涂抹果酱

    题目描述 Tyvj 两周年庆典要到了,Sam 想为 Tyvj 做一个大蛋糕.蛋糕俯视图是一个 N×M 的矩形,它被划分成 N×M 个边长为 1×1 的小正方形区域(可以把蛋糕当成 NNN 行 MMM列 ...

随机推荐

  1. BPF的可移植性和CO-RE (Compile Once – Run Everywhere)

    BPF的可移植性和CO-RE (Compile Once – Run Everywhere) 在上一篇文章中介绍了提高socket性能的几个socket选项,其中给出了几个源于内核源码树中的例子,如果 ...

  2. Python将GIF图片转换成png图片帧

    效果图: 转换之后保存到文件夹中: 代码如下:(第三方库pillow,安装方法:在cmd中输入:  pip install pillow) from PIL import Image import o ...

  3. udp聊天室--简易

    package 聊天; /*一切随便消逝吧*/ import java.net.DatagramSocket; import java.net.SocketException; public clas ...

  4. Linux 网卡 team配置

    网卡 team配置 目录 网卡 team配置 一.介绍 runner 方式: 1.roundrobin [mode 0]轮转策略 (balance-rr) 2.activebackup[mode 1] ...

  5. [不止于代码]Unraid基本使用速记

    1.Unraid简介 Unraid是一个虚拟机系统,类似于VM.PVE,但又区别于前二者.通过Unraid的Dokcer可以快速构建类Nas及虚拟机环境,也可虚拟黑群晖使用,可以使用磁盘阵列,保护你的 ...

  6. swoole中websoket创建在线聊天室(php)

    swoole中websoket创建在线聊天室(php) swoole现仅支持Linix,macos 创建websocket服务器 首先现在服务器创建一个websocket服务器 <?php // ...

  7. 深入理解static、volatile关键字

    static 意思是静态的,全局的.被修饰的东西在一定范围内是共享的,被类的所有实例共享,这时候需要注意并发读写的问题. 只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内找到他们. ...

  8. Spark学习进度11-Spark Streaming&Structured Streaming

    Spark Streaming Spark Streaming 介绍 批量计算 流计算 Spark Streaming 入门 Netcat 的使用 项目实例 目标:使用 Spark Streaming ...

  9. Centos7安装Jenkins和目录迁移

    Centos7安装Jenkins和目录迁移 内容: 安装Jenkins和相关的配置 尝试目录迁移,模拟磁盘空间不足 1. 安装Jenkins和配置 安装 根据Jenkins的官方安装指引,安装步骤如下 ...

  10. 【Java】一个简单的Java应用程序

    简单记录,Java 核心技术卷I 基础知识(原书第10 版) 一个简单的Java应用程序"Hello, World!" Hello, World! Goodbye,World! 一 ...