矩阵快速幂。

设ai表示涂完i块之后,红绿均为偶数的方案数

设bi表示涂完i块之后,红为偶数的方案数

设ci表示涂完i块之后,绿为偶数的方案数

设di表示涂完i块之后,都不是偶数的方案数

ai+1=ai+ai+bi+ci

bi+1=ai+2*bi+di

ci+1=ai+2*ci+di

di+1=bi+ci+2*di

然后很容易构造出矩阵。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<algorithm>
using namespace std;int n;
long long MOD=10007;struct Matrix
{long long A[5][5];int R, C;Matrix operator*(Matrix b);
};Matrix X, Y, Z;Matrix Matrix::operator*(Matrix b)
{Matrix c;memset(c.A, 0, sizeof(c.A));int i, j, k;for (i = 1; i <= R; i++)for (j = 1; j <= b.C; j++)for (k = 1; k <= C; k++)c.A[i][j] = (c.A[i][j] + (A[i][k] * b.A[k][j]) % MOD) % MOD;c.R = R; c.C = b.C;return c;
}void init()
{n=n-1;memset(X.A, 0, sizeof X.A);memset(Y.A, 0, sizeof Y.A);memset(Z.A, 0, sizeof Z.A);Y.R = 4; Y.C = 4;for (int i = 1; i <= 4; i++) Y.A[i][i] = 1;X.R = 4; X.C = 4;X.A[1][1]=2; X.A[1][2]=1; X.A[1][3]=1; X.A[1][4]=0;X.A[2][1]=1; X.A[2][2]=2; X.A[2][3]=0; X.A[2][4]=1;X.A[3][1]=1; X.A[3][2]=0; X.A[3][3]=2; X.A[3][4]=1;X.A[4][1]=0; X.A[4][2]=1; X.A[4][3]=1; X.A[4][4]=2;Z.R = 1; Z.C = 4;Z.A[1][1]=2; Z.A[1][2]=1; Z.A[1][3]=1; Z.A[1][4]=0;}void read()
{scanf("%d", &n);
}void work()
{while (n){if (n % 2 == 1) Y = Y*X;n = n >> 1;X = X*X;}Z = Z*Y;printf("%lld\n",Z.A[1][1]);
}int main()
{int Case=1;int T;scanf("%d", &T);while (T--){read();init();work();}return 0;
}

转载于:https://www.cnblogs.com/zufezzt/p/5483335.html

POJ 3734 Blocks相关推荐

  1. POJ - 3734 Blocks 指数生成函数

    传送门 文章目录 题意: 思路: 题意: 一段长度为nnn的序列,你有红黄蓝绿四种颜色的砖块,问你铺砖的方案数,每块砖长度为111,其中红黄颜色个数必须为偶数. 思路: 考虑多重集合排列数: 所以我们 ...

  2. POJ 3734 Blocks 矩阵递推

    POJ3734 比较简单的递推题目,只需要记录当前两种颜色均为偶数, 只有一种颜色为偶数 两种颜色都为奇数 三个数量即可,递推方程相信大家可以导出. 最后来个快速幂加速即可. #include< ...

  3. POJ 3734 Blocks (线性递推)

    定义ai表示红色和绿色方块中方块数为偶数的颜色有i个,i = 0,1,2. aij表示刷到第j个方块时的方案数,这是一个线性递推关系. 可以构造递推矩阵A,用矩阵快速幂求解. 1 /********* ...

  4. poj 1390:Blocks 方盒游戏

    总时间限制: 5000ms 内存限制: 65536kB 描述 Some of you may have played a game called 'Blocks'. There are n block ...

  5. 解题报告(四)生成函数(ACM/ OI)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  6. SDU程序设计思维实践题目总结

    题目来源及链接 题目名称及讲解博客链接 涉及算法 原题以及原题链接 第二周作业 Maze BFS POJ-3984 Pour water BFS POJ-1606 第二周实验 化学 模拟 codefo ...

  7. ACM里的生成函数初探

    生成函数 前情提要:由于本人不太喜欢写博客(懒),所以写的时候一般是由于某些原因写的专题内容.这次是2020CCPC长春热身赛的D题没做出来. 大佬论文放前面:推荐阅读:毛杰明 母函数的性质及应用 基 ...

  8. the blocks problem(uva 101 or poj 1208)

    题目描述见:uva 101 or poj 1208 关键在于彻底理解题目中搬积木的几个命令的含义,见具体分析 如果还不能理解题意,那么找一个正确通过的代码,编译并输入测试数据,查看其每一个命令的执行情 ...

  9. Blocks(poj 1390) 动态规划 方盒游戏 (升维——三维)

    Blocks  点击转到 Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 6197   Accepted: 2557 Desc ...

最新文章

  1. java.io.FileNotFoundException: /storage/emulated/0/one.mp4 (Permission denied)
  2. 速读《构建之法:现代软件工程》提问
  3. Excel VBA中的等价(Eqv)和蕴含(Imp)
  4. 【NOI2013模拟】棋盘游戏
  5. Java 监听器,国际化
  6. wget命令详解_嵌入式学习之 Wget 命令详解
  7. [2019杭电多校第十场][hdu6701]Make Rounddog Happy
  8. Excel利用宏进行VBA编程
  9. 精益求精, ePub 电子书制作手记
  10. jQuery 插件库
  11. 一家计算机专卖店A型计算器,A型计算器谱子 | 手游网游页游攻略大全
  12. 3dsmax 扫描功能 点连接 绘制连接线
  13. shamir秘密共享matlab程序,shamir 秘密共享代码
  14. 生信漫谈如何做出美美的多序列比对图
  15. 【Chrome】解决浏览器萤幕画面模糊字体不清楚方法
  16. 网络天气预报项目笔记(Qt)
  17. Jfreechart图表生成方法
  18. 打分五角星html制作,css简单实现五角星评分、点赞收藏、展示评分(半颗星、1/3颗星)...
  19. Ubuntu下Madagascar安装教程
  20. Python写王者荣耀小游戏

热门文章

  1. timer.schedule —— timer定时器的用法
  2. java练习: 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如:
  3. 承德计算机专业去哪考试,2021河北省考承德都在哪个学校考试?
  4. java 日期的加减_用java实现日期类的加减
  5. python打包成exe闪退_脚本程序打包后,黑框一闪而过,程序不能运行
  6. java版msn_强!Java实现MSN Messenger聊天
  7. tcp ssl java_SSL的TCP通信
  8. 2021年春季学期-信号与系统-第八次作业参考答案-第十一小题
  9. 第十五届全国大学生智能车全国总决赛获奖信息-华北赛区
  10. 我把梦打开,只为你进来