考虑用4^n-不存在连续4个相同的。

f(i,j,k,l)表示以i为结尾的序列,最后三位分别是j,k,l时的方案。

可以转移,写一个64*64的转移矩阵。

貌似可以优化?……未完待续。

#include<cstdio>
#include<vector>
#include<iostream>
using namespace std;
typedef long long ll;
#define MOD 1000000009ll
typedef vector<ll> vec;
typedef vector<vec> mat;
mat I;
mat operator * (const mat &A,const mat &B){mat C(A.size(),vec(B[0].size()));for(int i=0;i<A.size();++i){for(int k=0;k<B.size();++k){for(int j=0;j<B[0].size();++j){C[i][j]=(C[i][j]+A[i][k]*B[k][j]%MOD)%MOD;}}}return C;
}
mat Quick_Pow(mat a,ll p)
{if(!p){return I;}mat res=Quick_Pow(a,p>>1ll);res=res*res;if((p&1ll)==1ll){res=res*a;}return res;
}
ll Quick_Pow(ll a,ll p)
{if(!p){return 1;}ll res=Quick_Pow(a,p>>1ll);res=res*res%MOD;if((p&1ll)==1ll){res=(a%MOD*res)%MOD;}return res;
}
ll n;
int main(){cin>>n;I.assign(64,vec(64));for(int i=0;i<64;++i){for(int j=0;j<64;++j){I[i][j]=0;}}for(int i=0;i<64;++i){I[i][i]=1;}mat A(64,vec(1));for(int i=0;i<64;++i){A[i][0]=1;}mat b(64,vec(64));for(int i=0;i<64;++i){for(int j=0;j<64;++j){b[i][j]=0;}}for(int i=0;i<4;++i){for(int j=0;j<4;++j){for(int k=0;k<4;++k){int hang=i*16+j*4+k;if(i==j || j==k || i==k){for(int l=0;l<4;++l){int lie=l*16+i*4+j;b[hang][lie]=1;}}else{for(int l=0;l<4;++l){if(l==i || l==j || l==k){int lie=l*16+i*4+j;b[hang][lie]=1;}}}}}}
//  for(int i=0;i<64;++i){
//      for(int j=0;j<64;++j){
//          printf("%I64d ",b[i][j]);
//      }
//      puts("");
//  }mat c=Quick_Pow(b,n-3ll)*A;ll n4=Quick_Pow(4ll,n);ll tmp=0;for(int i=0;i<64;++i){tmp=(tmp+c[i][0])%MOD;}cout<<(n4-tmp+MOD)%MOD<<endl;return 0;
}

转载于:https://www.cnblogs.com/autsky-jadek/p/6935697.html

【矩阵乘法】CDOJ1610 黑红梅方相关推荐

  1. UESTC1610 黑红梅方

    题意:一行有n个扑克牌,每一个扑克牌有四种颜色,问有几种扑克牌,满足连续四个不相等 题解:状态压缩+递推+矩阵快速幂,不过状态很多,不能直接写,这里分为5种状态 #include <bits/s ...

  2. UESTC 1610 黑红梅方

    题目链接:http://acm.uestc.edu.cn/#/problem/show/1610 解法: 卿式扑克序列? 出现一组有连续4张牌均不同的序列 不好计算,怎么办? 可以计算出没有一组连续4 ...

  3. 破解黑红梅方提前知道保单机里的答案

    现在市面上保单机一般就是热敏和激光打印机,激光也简称*射打印机,一般适用与,五星宏辉,单挑王,超级金三色,,彩金宏辉,富家乐 等等打保单的保单 机, 热敏打印机的原理是热敏打印机的工作原理是打印头上安 ...

  4. 【Scala-spark.mlib】本地矩阵乘法计算效率比较(稠密稀疏哪家强?)

    矩阵乘法效率比较 1. 矩阵乘法 2. 效率比较  2.1. DenseMatrix(50% zeros) X DenseMatrix  2.2. SparseMatrix X DenseMatrix ...

  5. 【bzoj5082】弗拉格 矩阵乘法

    题目描述 给你n个flag,你要把每个染色成红黑白黄四色之一,满足: 1.相邻旗不能同色 2.白不能和黄相邻,红不能和黑相邻 3.不能存在连续三个球依次是"黑白红"或"红 ...

  6. 【Android 应用开发】Paint 滤镜原理 之 颜色矩阵 ( 颜色模式 | 颜色通道 | 颜色矩阵 | 矩阵运算 | 矩阵乘法 | 矩阵加法 | 颜色矩阵深入解析 )

    文章目录 颜色模式 颜色通道 Android 中的颜色矩阵 矩阵乘法运算 滤镜中的矩阵乘法运算 矩阵加法运算 滤镜中的矩阵乘法运算 滤镜运算原理 ( 总结 ) 实际滤镜理论示例 颜色模式 颜色模式 : ...

  7. HNOI2008 GT考试 (KMP + 矩阵乘法)

    传送门 这道题目的题意描述,通俗一点说就是这样:有一个长度为n的数字串(其中每一位都可以是0到9之间任意一个数字),给定一个长度为m的模式串,求有多少种情况,使得此模式串不为数字串的任意一个子串.结果 ...

  8. 年终重磅盘点:2022计算机科学6大突破!破解量子加密、最快矩阵乘法等榜上有名...

    来源:新智元 编辑:Aeneas 好困 [导读]2022年,计算机领域发生了哪些大事?Quanta Magazine的年终盘点来了. 2022年,计算机领域发生很多划时代的大事. 在今年,计算机科学家 ...

  9. MegEngine| CUDA 矩阵乘法终极优化

    前言 单精度矩阵乘法(SGEMM)几乎是每一位学习 CUDA 的同学绕不开的案例,这个经典的计算密集型案例可以很好地展示 GPU 编程中常用的优化技巧,而能否写出高效率的 SGEMM Kernel , ...

最新文章

  1. 2022年:机器人技术的重大革命
  2. 现实世界的Windows Azure:采访Figlo的全球合作伙伴支持经理Nathan Brouwer
  3. 图数据库Neo4j全栈Web技术解密
  4. ssl证书(https) iis 配置安装
  5. qmoc文件_手动生成MOC文件
  6. LINUX修改文件权限 学习
  7. 使用RabbitMQ实现延迟任务
  8. C语言和设计模式(装饰模式)
  9. smali-2.2.4.jar baksmali-2.2.4.jar
  10. SpringMVC对象绑定时自定义名称对应关系
  11. 面试官:设计一个安全的登录都要考虑哪些?我一脸懵逼。。
  12. C#- XPath教程
  13. html小任务,编写表单里的各项元素
  14. Android对话框的使用总结
  15. mysql group by作用_group by实现原理及其作用
  16. 艾司博讯:拼多多商品讲解视频如何制作
  17. 开源博客wordpress,一键搭建属于自己的博客
  18. HashSet集合保证元素唯一性原理分析
  19. E Enigmatic Partition 2020牛客暑期多校训练营(第八场)
  20. Word如何添加标题

热门文章

  1. 什么是深拷贝?什么是浅拷贝?如何实现深拷贝?
  2. latex中使用定理、证明、缩进
  3. 让我知道生活如何教我做人
  4. 创业必读网站和工具集合
  5. 简单的HTML5个人简历
  6. in 和exits 的区别
  7. 少打一局王者荣耀就能上手Spring Cloud?!
  8. 什么是RIA AIR Flex
  9. freopen 函数和 fopen 函数简单介绍
  10. 单引号与双引号的区别