题意:一行有n个扑克牌,每一个扑克牌有四种颜色,问有几种扑克牌,满足连续四个不相等

题解:状态压缩+递推+矩阵快速幂,不过状态很多,不能直接写,这里分为5种状态

#include <bits/stdc++.h>
#define maxn 5
const long long mod = (1e9+9);
using namespace std;
struct mat{long long m[maxn][maxn], len;mat(){memset(m, 0, sizeof(m));len=maxn;}mat friend operator*(mat a,mat b){mat d;for(int i=0;i<a.len;i++)for(int j=0;j<b.len;j++)for(int k=0;k<b.len;k++)d.m[i][j] = (d.m[i][j]%mod+(a.m[i][k]*b.m[k][j])%mod)%mod;return d;}
};
mat f(mat x,long long num){mat t;for(int i=0;i<t.len;i++) t.m[i][i] = 1;while(num){if(num&1) t = t*x;x = x*x;num >>= 1;}return t;
}
long long ff(long long x,long long t,long long m){long long ans=1;while(t){if(t&1) ans = ans*x%m;x = x*x%m;t >>= 1;}return ans;
}
int main(){long long  n;mat fi, t;int tt[5][5]={1,0,3,0,0,0,1,0,1,2,0,1,0,1,2,1,0,3,0,0,0,1,0,1,1};fi.m[0][0] = 4;fi.m[0][1] = 12;fi.m[0][2] = 12;fi.m[0][3] = 12;fi.m[0][4] = 24;for(int i=0;i<5;i++)for(int j=0;j<5;j++)t.m[i][j] = tt[i][j];cin>>n;fi = fi*f(t, n-3);cout<<((ff(4, n, mod)-fi.m[0][0]-fi.m[0][1]-fi.m[0][2]-fi.m[0][3]-fi.m[0][4])%mod+mod)%mod<<endl;return 0;
}

转载于:https://www.cnblogs.com/Noevon/p/7221583.html

UESTC1610 黑红梅方相关推荐

  1. UESTC 1610 黑红梅方

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

  2. 【矩阵乘法】CDOJ1610 黑红梅方

    考虑用4^n-不存在连续4个相同的. f(i,j,k,l)表示以i为结尾的序列,最后三位分别是j,k,l时的方案. 可以转移,写一个64*64的转移矩阵. 貌似可以优化?--未完待续. #includ ...

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

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

  4. PHP签名不合法或拉黑,拒绝做微商被屏蔽拉黑,方法我有!-微商教程

    很多做微商的朋友最深刻的领悟就是,在自己刷遍朋友圈后基本变得没朋友,想做好微商绝对不是每天几十次的刷屏,刷成交单,你是能从她的朋友圈学到很多知识的,她们如何通过朋友圈让顾客觉得自己专业,如何通过朋友圈 ...

  5. java输出一副扑克牌_Java输出扑克牌中的“红黑梅方”和其他表情包

    二.Java语言基础5 5.1原码.反码.补码 1.原码,就是二进制表示法,最高位为符号位,"0"表示正,"1"表示负,其余位表示数值的大小. 2.反码,原码取 ...

  6. java里如何表示黑桃方片_扑克红桃,方片,黑桃,梅花他们的顺序如何,代表什么意义呀?jac 爱问知识人...

    一副扑克中的52张是正牌,表示一年中有52个星期:两张是副牌,大王表示太阳,小王代表月亮.由于一年有春.夏.秋.冬四个季度,所以又分别用黑桃.红桃.草花.方块4种花色表示.其中红色的红桃.方块表示白昼 ...

  7. c语言设计黑红梅方四种图案,8h9btf

    AutoCAD 快捷键大全(一)字母类 1.对象特性 ADC, *ADCENTER(设计中心"Ctrl+2") CH, MO *PROPERTIES(修改特性"Ctrl+ ...

  8. SPU、SKU、ARPU是什么,我来记录一下我的理解

    在电商系统里经常会提到"商品"."单品"."SPU"."SKU"这几个词,那么这几个词到底是什么意思呢? 既然不知道是什 ...

  9. 【Java8】堆栈/队列/数组/链表/红黑树,List/set子接口,hashcode/hashset,Map/内部接口,/统计字符个数,debug,斗地主,Collections,TreeSet

    文章目录 1.堆栈/队列/数组/链表:数据结构即计算机组织管理数据的方式,堆栈指的是内存图中的栈,不是堆 2.红黑树:二查,二查平,二查平1倍 3.List子接口:集合,IndexOutOfBound ...

最新文章

  1. 楼市十大卖楼花招曝光〔转载〕
  2. python相比c语言更动态_Python金融大数据分析
  3. O(N) 求 1~N 逆元 模板及证明
  4. Leetcode题库 11.盛水最多的容器(双指针法 C实现)
  5. POJ 3258 River Hopscotch(二分查找答案)
  6. css扩展语言_如何决定是否应该链接或扩展CSS类
  7. 使用layer.tips实现鼠标悬浮时触发事件提示消息实现
  8. c# opencv 轮廓检测_基于OpenCV的区域分割、轮廓检测和阈值处理
  9. Ubuntu下基本的命令总结
  10. linux下安装cudnn
  11. tomcat启动时,没有启动你所配置的项目(原因可能是Eclipse 中的工程builed 失败造成),如何解决~
  12. Oracle导出dmp文件(数据库备份、数据库导出、数据库转移)
  13. 分布式机器学习(一)之总体概述
  14. 计算机中文输入法教案,智能ABC输入法教案
  15. mysql MMM方案
  16. Spring boot+Mybatis连接多种数据库oracle,mysql,sqlserver
  17. 关于ancher box 和bounding box的区别
  18. Oracle连接pg,pg连接oracle.sql
  19. 【java基础】java的官网和jdk安装和下载
  20. 软件测试以bug数来考核,软件测试能力提升及其思考

热门文章

  1. (转自网易--无风)IGMP V1 V2 V3 定义和区别
  2. android notifydatasetchanged 不起作用,为什么android子线程更新数据再调用notifyDataSetChanged没有效果...
  3. [学习LCM]lcm教程与实例(C++ API)
  4. Windows系统命令(dos)
  5. 未来网络安全十大趋势
  6. java expires_设置浏览器禁止 缓存 的三个头 : expires,pragma, cache-
  7. 运算放大器常见的指标
  8. [BZOJ4455][Zjoi2016]小星星
  9. html中边框只让一遍又弧度,在css中怎样让边角具有弧度
  10. 从干净SSD安装ubuntu20.04.3 LTS 单系统