jzoj4787-[NOIP2016提高A组模拟9.17]数格子【矩阵乘法】

正题


题目大意

1×21\times 21×2的方块铺满4×n4\times n4×n的方格方案总数。


解题思路

首先
当计算fnf_nfn时,
显然最后一排可以(−−−−)(∣∣∣∣)(−−∣∣)(∣−−∣)(∣∣−−)(--\ --)(|\ \ |\ \ |\ \ |)(--\ \ |\ \ |)(|\ \ --\ \ |)(|\ \ |--)( )(      )(    )(    )(  )

然后第一种显然方案数是fn−1f_{n-1}fn1
第二种显然是fn−2f_{n-2}fn2
主要是后三种是一样的:
(∣∣−−)(|\ \ |--)(  )(∣∣∣∣)(|\ \ |\ \ |\ \ |)(      )
(∣∣−−)(|\ \ |--)(  )(∣∣−−)(|\ \ |--)(  )
继续往后推会发现其实最后答案∑i=1n−2fi\sum_{i=1}^{n-2} f_{i}i=1n2fi

那么答案就变成了4∗fn−2+fn−3−fn−44*f_{n-2}+f_{n-3}-f_{n-4}4fn2+fn3fn4
然后和前面两种加起来就是fn=fn−1+5∗fn−2+fn−3−fn−4f_{n}=f_{n-1}+5*f_{n-2}+f_{n-3}-f_{n-4}fn=fn1+5fn2+fn3fn4

矩阵乘法加速即可


codecodecode

#include<cstdio>
#include<cstring>
#define ll long long
using namespace std;
const ll SIZE=4;
ll n,m;
struct matrix{ll a[SIZE][SIZE];
}f;
matrix operator *(matrix &a, matrix &b) {matrix c;memset(c.a,0,sizeof(c.a));for (ll i=0;i<SIZE;i++)for (ll j=0;j<SIZE;j++)for (ll k=0;k<SIZE;k++)(c.a[i][j]+=a.a[i][k]*b.a[k][j])%=m;return c;
}
void ycl()
{memset(f.a,0,sizeof(f.a));f.a[3][3]=1;f.a[3][2]=1;f.a[2][3]=5;f.a[1][3]=1;f.a[0][3]=-1;f.a[2][1]=1;f.a[1][0]=1;
}
matrix power(matrix f,ll b)
{matrix ans;memset(ans.a,0,sizeof(ans.a));ans.a[0][3]=ans.a[0][1]=ans.a[0][0]=1;while(b){if(b&1) ans=ans*f;f=f*f;b>>=1;}return ans;
}
int main()
{while(1){scanf("%lld%lld",&n,&m);if(!n&&!m) return 0;ycl();f=power(f,n);//for(ll i=0;i<SIZE;i++)//    printf("%lld ",f.a[0][i]);printf("%lld\n",(f.a[0][3]+m)%m);}
}

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

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

相关文章

Flowable学习笔记(一、入门)

转载自 Flowable学习笔记&#xff08;一、入门&#xff09; 一、Flowable简介 1、Flowable是什么 Flowable是一个使用Java编写的轻量级业务流程引擎。Flowable流程引擎可用于部署BPMN 2.0流程定义&#xff08;用于定义流程的行业XML标准&#xff09;&#xff0c; 创建这些流…

01-MyBatis入门程序

MyBatis入门程序 目录 1. 下载 Mybatis 核心包2. 创建工程&#xff0c;引入 MyBatis 核心包及依赖包3. 创建 customer 表&#xff0c;建立与表对应的 domain使用 lombok&#xff0c;开启注解创建 Customer 类4. 创建 MyBatis 核心配置文件 SqlMappingConfig.xml5. 创建表对象…

角落的开发工具集之Vs(Visual Studio)2017插件推荐

“ 工具善其事&#xff0c;必先利其器&#xff01;装好这些插件让vs更上一层楼”因为最近录制视频的缘故&#xff0c;很多朋友都在QQ群留言&#xff0c;或者微信公众号私信我&#xff0c;问我一些工具和一些插件啊&#xff0c;怎么使用的啊&#xff1f;那么今天我忙里偷闲整理一…

jzoj4788-[NOIP2016提高A组模拟9.17]序列【差分,贪心】

正题 题目大意 一个序列AAA可以每次选择一段区间(Ai1)%4(i∈[l..r])(A_{i}1)\%4(i\in [l..r])(Ai​1)%4(i∈[l..r])。求最少次数使其变成BBB序列。 解题思路 先计算出每个数字最少加多少可以变成目标数字记录入aaa数组。 然后若不考虑一个数要取模多次的话答案就是 ∑i1nmax…

02-MyBatis配置SQL打印

MyBatis 配置SQL打印 在 SqlMappingConfig.xml 中配置以下代码&#xff1a; <!--配置sql打印--> <settings><setting name"logImpl" value"STDOUT_LOGGING"/> </settings>运行效果&#xff1a;会显示 SQL 语句&#xff0c;查询结…

Flowable学习笔记(二、BPMN 2.0-基础 )

转载自 Flowable学习笔记&#xff08;二、BPMN 2.0-基础 &#xff09; 1、BPMN简介 业务流程模型和标记法&#xff08;BPMN, Business Process Model and Notation&#xff09;是一套图形化表示法&#xff0c;用于以业务流程模型详细说明各种业务流程。 它最初由业务流程管理…

ASP.NET Core文件上传与下载(多种上传方式)

前言前段时间项目上线,实在太忙,最近终于开始可以研究研究ASP.NET Core了.打算写个系列,但是还没想好目录,今天先来一篇,后面在整理吧.ASP.NET Core 2.0 发展到现在,已经很成熟了.下个项目争取使用吧.正文1.使用模型绑定上传文件(官方例子)官方机器翻译的地址:https://docs.mic…

03-映射文件的sql语句中 #{} 和 ${} 的区别以及实现模糊查询

映射文件的sql语句中 #{} 和 ${} 区别以及实现模糊查询 目录 sql 语句中的 #{}#{} 模糊查询错误用法#{} 实现模糊查询sql 语句中的 ${}${} 实现模糊查询#{} 与 ${} 对比sql 语句中的 #{} 表示一个占位符号&#xff0c;通过 #{} 可以实现 preparedStatement 向占位符中设置值…

欢乐纪中A组周六赛【2019.5.25】

前言 话说中间jzojjzojjzoj炸了一次。 成绩 JJJ表示初中&#xff0c;HHH表示高中后面加的是几年级 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCC222(J−2)WYC(me)(J-2)WYC(me)(J−2)WYC(me)250250250100100100100100100505050444(J−2)ZYC(J-2)ZYC(J−2)ZYC200200…

SpringBoot集成Flowable

一、项目结构 二、maven配置 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.a…

04-插入操作更新操作删除操作

保存更新删除 目录 插入操作获取插入的最后一个id更新操作删除操作插入操作 映射文件 Customer.xml &#xff1a; 插入数据的标签为 insert&#xff0c;与查询 select 区分开来。 parameterType 是输入参数类型&#xff0c;这里指定为 Customer 对象&#xff0c;即需要传入一…

微软跨平台移动开发工具套件HockeyApp宣布免费

HockeyApp 是一款领先的移动崩溃分析和应用发布服务&#xff0c;可为开发者提供实时崩溃分析报告、用户反馈、测试版分发平台以及测试分析等功能&#xff0c;于 2016 年被微软收购&#xff0c;随后集成在了 Visual Studio 应用中心中&#xff0c;与 Xamarin Insights 一起提供移…

P3914-染色计数【树形dp】

正题 题目链接:https://www.luogu.org/problemnew/show/P3914 题目大意 nnn个点每个点有些可以染的颜色&#xff0c;要求相邻颜色不相同&#xff0c;方案总数。 解题思路 树形dpdpdp&#xff0c;定义fx,if_{x,i}fx,i​表示点xxx的染颜色iii的方案数。然后定义zx∑i1mfxiz_x\s…

ASP.NET Core使用静态文件、目录游览与MIME类型管理

前言今天我们来了解了解ASP.NET Core中的静态文件的处理方式.以前我们寄宿在IIS中的时候,很多静态文件的过滤 和相关的安全措施 都已经帮我们处理好了.ASP.NET Core则不同,因为是跨平台的,解耦了IIS,所以这些工作 我们可以在管道代码中处理.正文在我们的Web程序开发中,肯定要提…

P5283-[十二省联考2019]异或粽子【可持久化Trie,堆】

正题 题目链接:https://www.luogu.org/problemnew/show/P5283 题目大意 给定一个序列&#xff0c;求kkk个不同的的[l..r][l..r][l..r]的区间异或值的和最大。 解题思路 先让aiaixorai−1a_ia_i\ xor\ a_{i-1}ai​ai​ xor ai−1​(异或前缀和)。 然后现在问题变成了求kkk对最…

ES快速入门

转载自 ES快速入门 3 ES快速入门 ES作为一个索引及搜索服务&#xff0c;对外提供丰富的REST接口&#xff0c;快速入门部分的实例使用head插件来测试&#xff0c;目的是对ES的使用方法及流程有个初步的认识。 3.1 创建索引库 ES的索引库是一个逻辑概念&#xff0c;它包括了分…

05-传统开发模式DAO

传统开发模式DAO 目录 定义接口 CustomerDao.java实现接口 CustomerDaoImpl.java测试类在传统开发模式DAO下&#xff0c;我们自己先定义好接口&#xff0c;然后再去定义实现类&#xff0c;在实现类中实现接口的操作。到时候只需要创建一个 dao 对象&#xff0c;即可调用其中的…

AspnetCore 2.0 自动API文档生成组件,支持protobuffer

关于API文档自动生成&#xff0c;用于对APP端的开发帮助文档生成&#xff0c;默认ProtoBuffer传输格式。本项目并不是RESTful风格&#xff0c;是面向功能的API类型。ApiDoc的作用是根据定义好的API接口和注释来自动生成给内部开发者提供的API对接文档。欢迎Star一下&#xff0c…

P5127-子异和【线段树,树链剖分,位运算】

正题 题目链接:https://www.luogu.org/problemnew/show/P5127 题目大意 定义一个序列的子异和为所有自己的异或和的和。 然后有点权的树&#xff0c;要求支持路径异或和路径求子异和。 解题思路 首先树链剖分是肯定的&#xff0c;然后我们考虑用哪个数据结构。 从每个位单独…

06-Mapper动态代理

Mppaer 动态代理 目录 创建 Mapper 工程定义接口的要求测试类Mapper 中参数传递单个参数多个参数param命名参数多个参数封装成 Map多个参数之 POJO参数处理源码分析之前我们一直都使用传统开发模式DAO&#xff0c;即定义接口&#xff0c;然后定义实现类。这个其实是较为繁琐的…