CSP201409T5拼图

2024-04-07 21:36
文章标签 拼图 csp201409t5

本文主要是介绍CSP201409T5拼图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题意:给出一个 n × m n×m n×m的方格图,现在要用如下L型的占3个的积木拼到这个图中,总共有多少种拼法使图满。

#include<bits/stdc++.h>
using namespace std;
long long n,m,k=1,Now;
int Mod=1000000007;
struct Matrix
{long long a[129][129];Matrix(){for(long long i=0;i<k;i++)a[i][i]=1;}Matrix(int x){memset(a,0,sizeof(a));}Matrix operator*(Matrix& B)//矩阵乘法 {Matrix t(0);for(int i=0;i<k;i++)for(int j=0;j<k;j++)for(int l=0;l<k;l++)t.a[i][j]=(t.a[i][j]+a[i][l]*B.a[l][j])%Mod;return t;}
}; 	
Matrix quickmul(Matrix ans,long long p)//矩阵快速幂 
{Matrix t;	while(p){if(p&1)t=t*ans;ans=ans*ans;p>>=1;}return t;
}
Matrix A(0);
void dfs(int now,int next)
{//cout<<now<<" "<<next<<endl;if(now+1==k){A.a[Now][next]++;return ;}for(int l=0;l<m;l++){if((now>>l)&1)continue;//当前列的位置上有拼图则跳过int temp=1<<l;int now1,next1;//递归,四种拼图 now1=temp|(temp<<1);// 1 1next1=temp;         // 0 1if((l+1<m)&&!(now&now1||next&next1))dfs(now1|now,next1|next);now1=temp|(temp<<1);// 1 1 next1=temp<<1;      // 1 0if((l+1<m)&&!(now&now1||next&next1))dfs(now1|now,next1|next);now1=temp;		    // 0 1 next1=temp|temp<<1; // 1 1if((l+1<m)&&!(now&now1||next&next1))dfs(now1|now,next1|next);now1=temp;	        // 1 0 next1=temp|temp>>1; // 1 1if((l)&&!(now&now1||next&next1))dfs(now1|now,next1|next);return ;}
}
int main()
{cin>>n>>m;for(long long i=0;i<m;i++)k<<=1;for(Now=0;Now<k;Now++)dfs(Now,0);Matrix ANS=quickmul(A,n);	/*for(int i=0;i<k;i++){for(int j=0;j<k;j++)cout<<ANS.a[i][j]<<" ";cout<<endl;	}*/cout<<ANS.a[0][0]<<endl;return 0;
}

这篇关于CSP201409T5拼图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/883732

相关文章

java拼图小游戏项目

创建一个Java拼图小游戏是一个有趣且富有教育意义的项目,可以锻炼你的编程技能。以下是开发一个基本拼图游戏可能需要考虑的几个步骤: 项目规划: 确定游戏的基本规则和玩法。设计游戏的界面和用户交互。 环境搭建: 确保你的开发环境中安装了Java Development Kit (JDK)。选择一个合适的IDE(如IntelliJ IDEA、Eclipse等)。 界面设计: 使用Swing或J

基于opencv的相机之拼图功能实现(十)

简介   本篇是对实现图片处理功能:【拼图】实现的记录。 实现原理   点击进入该功能之后,首先会初始化一个背景图片。背景中对应放图片的拼图位置被初始化为空白区域,点击该空白区域,会进入图库中进行图片选择。选好图片之后,将回到本功能的界面;同时被点击的空白区域,将被刚刚选择的图片填充。具体可以参考资料:opencv实现拼图功能 http://blog.csdn.net/u01163

登录/注册- 滑动拼图验证码(IOS/Swift)

本章介绍如何使用ios开发出滑动拼图验证码,分别OC代码和swift代码调用 1.导入项目model文件OC代码(下载完整Demo) 2.放入你需要显示的图片 一:OC调用 #import "ViewController.h"#import "CodeView.h"@interface ViewController () <CodeViewDelegate>@property (n

Halcon 双相机标定与拼图(二)

一、概述 这种标定有两种模式,有一个标定板和多个标定板两种 一个标定板 两个相机的重叠区域比较大,那么我们可以把标定板放到那个重叠区域来统一坐标系,如下 这种是只需要一个标定板,这种是推荐的方式 。 多个标定板 由于要求的视野没有重叠区域,或者重叠的区域太小了,那么我们可以采用这种方式  这个方法就是对上面绿色的部分,两个标定板的关系很重要,会直接影响到最后的图像结果 二、

Halcon 双相机标定与拼图(一)

一、概述 最近有一个多相机标定的项目,大概是4个相机来标定,同一坐标系,然后拼接图,之前双相机标定的时候也大概看看,所以今天就找了那个halcon 案例多学一下,后面我打算做一个对位贴合的东西,类似于VM的那种,最后我想把整个流程封装起来。 思路: 1、做联合标定,每个相机的内参标定,但是外参第二个相机是基于第一相机的 2、获得标定板(只有一个标定板)相机的第一个姿态,作为第一个相机的决定

as3用鼠标拖动图形拼图——灰常简单的教程

话说这种效果在课件里面经常用到,鼠标拖动事件,一个运用很频繁的事件,一起学习学习吧 首先SWF贡献给大家看看效果 感觉咋样,原理其实还蛮简单的,做做试试吧 下面来看看源码吧 package { import flash.display.MovieClip; import flash.display.Sprite; import flas

【教学类-58-05】黑白三角拼图05(2-10宫格,每个宫格随机1张-6张,带空格纸,1页3张黑白3张白卡)

背景需求: 【教学类-58-04】黑白三角拼图04(2-10宫格,每个宫格随机1张-6张,带空格纸,1页6张黑白,1张6张白卡)-CSDN博客文章浏览阅读582次,点赞16次,收藏3次。【教学类-58-04】黑白三角拼图04(2-10宫格,每个宫格随机1张-6张,带空格纸,1页6张黑白,1张6张白卡)https://blog.csdn.net/reasonsummer/article/d

【教学类-58-04】黑白三角拼图04(2-10宫格,每个宫格随机1张-6张,带空格纸)

背景需求: 前期制作了黑白三角拼图2*2、3*3、4*4,确定了基本模板,就可以批量制作更多格子数 【教学类-58-01】黑白三角拼图01(2*2宫格)固定256种+随机抽取10张-CSDN博客文章浏览阅读522次,点赞13次,收藏16次。【教学类-58-01】黑白三角拼图01(2*2宫格)固定256种+随机抽取10张https://blog.csdn.net/reasonsummer/a

滑动谜题 leetcode的BFS题目 启发如何写一个拼图编程呢

题目链接 题目要求,要将上面的拼板拼成123450 首先,转换为字符串,为什么要转换为字符串呢,因为处理会变得很简单比如示例一,转化为字符串是12345,目标字符串为123450,只需要证明通过某种交换,可不可以得到目标字符串。 那么如何处理交换呢?观察可以发现,假设0在右下角,那么可以向上,和向左交换;假设0在左上角,那么可以向右,向下交换。总结:0在不同的位置,可以有不同的交换方式,我

【教学类-58-02】黑白三角拼图02(3*3宫格)262144种

背景需求: 已知黑白三角拼图2*2(4个拼图)一共有256种排列方法 【教学类-58-01】黑白三角拼图01(2*2宫格)256种-CSDN博客文章浏览阅读142次,点赞5次,收藏12次。【教学类-58-01】黑白三角拼图01(2*2宫格)256种https://blog.csdn.net/reasonsummer/article/details/139173885?csdn_shar