题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6470

题意:求,直接矩阵快速幂得f(n)即可

构造矩阵如下:

n^3是肯定得变换的,用二项式展开来一点点配吧

我们会发现中间6*6的矩阵是个常数矩阵,则可以化为A=B^(N-2)*C(n-2次幂是因为我们求解是从N=3开始的),根据矩阵快速幂算出B^(N-2)次幂即可以了

矩阵快速幂的时间复杂度是logn

注意:我们中间构造的矩阵必须是一个方阵,矩阵快速幂的难点就在于构建中间的方阵

比如矩阵A,B,C,B是系数矩阵的话,A里的n要比c里的大1,并不是直接表示出来就可以了,左右两边的矩阵如果右边是X(n-1),左边就是Xn

方阵构建技巧可以看这篇博文:https://blog.csdn.net/u012061345/article/details/52224623

代码如下:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=; struct matrix{
ll a[][]; //begin with 1
int r,c;
matrix(int n,int m):r(n),c(m){memset(a,,sizeof(a));}
ll* operator[](int x){return a[x];}
friend matrix operator*(matrix A,matrix B)
{
matrix C(A.r,B.c);
for(int i=;i<=A.r;i++)
for(int j=;j<=B.c;j++)
for(int k=;k<=A.c;k++){
C[i][j]+=(A[i][k]*B[k][j])%mod;
C[i][j]+=mod;
C[i][j]%=mod;
}
return C;
}
};
matrix qpow(matrix A,ll m)//方阵A的m次幂
{
matrix ans(A.r,A.c);
for(int i=;i<=A.r;i++) ans.a[i][i]=; //单位矩阵
while(m)
{
if(m&)ans=ans*A;
A=A*A;
m>>=;
}
return ans;
} int main()
{
ll T,n;
for(cin>>T;T--;)
{
scanf("%lld",&n);
matrix A(,);
A[][]=;
A[][]=;
A[][]=;
A[][]=;
A[][]=;
A[][]=;
A[][]=;
A[][]=;
A[][]=;
A[][]=;
A[][]=;
A[][]=;
A[][]=;
A[][]=;
A[][]=;
A[][]=;
A[][]=;
matrix X2(,);
X2[][]=;
X2[][]=;
X2[][]=;
X2[][]=;
X2[][]=;
X2[][]=; matrix Xn=qpow(A,n-)*X2;
printf("%lld\n",Xn[][]);
}
}

广工十四届校赛 count 矩阵快速幂的更多相关文章

  1. 第五届华中区程序设计邀请赛暨武汉大学第十四届校赛 网络预选赛 A

    Problem 1603 - Minimum Sum Time Limit: 2000MS   Memory Limit: 65536KB   Total Submit: 564  Accepted: ...

  2. 省选模拟赛 Problem 3. count (矩阵快速幂优化DP)

    Discription DarrellDarrellDarrell 在思考一道计算题. 给你一个尺寸为 1×N1 × N1×N 的长条,你可以在上面切很多刀,要求竖直地切并且且完后每块的长度都是整数. ...

  3. 记第十四届省赛参赛体会&第十三届

    emmm....时间还是很久远了 还是流水账 这次比赛我还是挺开心的 因为感觉我们余神就是一把宝剑,然后我是她的Buff 前面四道题就挺顺利都1A过了,十年余神就是强无敌呀 最后两分钟过了第五题,银牌 ...

  4. 广工赛-hdu6470矩阵快速幂

    递推时把(n+1)^3拆开 构造矩阵即可 #include<bits/stdc++.h> using namespace std; #define ll long long #define ...

  5. hdu6470 Count 矩阵快速幂

    hdu6470 Count #include <bits/stdc++.h> using namespace std; typedef long long ll; , mod = ; st ...

  6. 2017中国大学生程序设计竞赛 - 网络选拔赛 HDU 6155 Subsequence Count 矩阵快速幂

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6155 题意: 题解来自:http://www.cnblogs.com/iRedBean/p/73982 ...

  7. 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 Coin 矩阵快速幂

    Bob has a not even coin, every time he tosses the coin, the probability that the coin's front face u ...

  8. HDU 6470 Count 【矩阵快速幂】(广东工业大学第十四届程序设计竞赛 )

    题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6470 Count Time Limit: 6000/3000 MS (Java/Others)    ...

  9. HDU 6464 免费送气球 【权值线段树】(广东工业大学第十四届程序设计竞赛)

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6464 免费送气球 Time Limit: 2000/1000 MS (Java/Others)    M ...

随机推荐

  1. 《Mysql 用户管理》

    一:数据库用户 ROOT 和 其他用户有什么区别么? -  Mysql root 和 linux root 不是一回事,数据库 root 只不过是初始化时候自己建立的一个用户而已,随时可以删除/修改. ...

  2. EXT的bug 布局border 和 grid的cellediting

    首先 我要的布局是上下两块,并且高度和按自己的喜欢可调节,所以我采用的是border的布局, 上下两块,都放grid列表,上面一块不可编辑,下面这块可编辑,如图 在编辑第二块的时候会出现这个现象 图一 ...

  3. vs自定义类模板

    .找到VS安装目录,我的目录是:C:Program Files (x86)Microsoft Visual Studio 12.0 .在C:Program Files (x86)Microsoft V ...

  4. 20190404 Informatic 学习一

    ETL 1. Informatic 下载 下载地址:https://edelivery.oracle.com/osdc/faces/Home.jspx,没有账号可以自己注册一个Oracle账号. 不得 ...

  5. cds view join和association

    1:创建两张表:ztt_teacher01 和ztt_teacher02 用于 cds view中的join和association 2:创建两个cds view:ztt_teacher01_id_n ...

  6. js $的扩展写法

    (function ($, w) { $.extend({   getRenderList: function (keyword, pageIndex, pageSize, renderEle, re ...

  7. Java过关测验

    库存物资管理系统一.背景资料:1.有一个存放商品的仓库,每天都有商品出库和入库.2.每种商品都有名称.生产厂家.型号.规格等.3.出入库时必须填写出入库单据,单据包括商品名称.生产厂家.型号.规格.数 ...

  8. java中的key事件监听机制

    package com.at221; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import javax.sw ...

  9. CSS注意点

    案例: 实际开发中,这样写:

  10. Vue系列之 => 父组件向子组件传值

    父组件向子组件传递数据 1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta c ...