<题目链接>

<转载于 >>> >

题目大意:

让你用1*2规格的地毯去铺4*n规格的地面,告诉你n,问有多少种不同的方案使得地面恰好被铺满且地毯不重叠。答案对1000000007取模。

解题分析:

看到题目所给n的数据这么大,就知道肯定存在递推公式,至于递推公式的具体的分析过程  >>>大牛博客。求出递推公式后,由于数据太大,所以我们利用矩阵快速幂来加速。当然,如果比赛的时候想不到递推公式,我们也可以通过搜素得到前面的几组数据,然后在通过高斯消元来得到符合这些数据的公式的通解,最后再利用矩阵快速幂来求解。

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
#define LL long long
const int mod=;
struct matrix
{
LL x[][];
};
matrix mutimatrix(matrix a,matrix b)
{
matrix temp;
memset(temp.x,,sizeof(temp.x));
for(int i=;i<;i++)
for(int j=;j<;j++)
for(int k=;k<;k++)
{
temp.x[i][j]+=a.x[i][k]*b.x[k][j];
temp.x[i][j]%=mod;
}
return temp;
} matrix k_powmatrix(matrix a,LL n)//矩阵快速幂
{
matrix temp;
memset(temp.x,,sizeof(temp.x));
for(int i=;i<;i++)
temp.x[i][i]=; while(n)
{
if(n&)
temp=mutimatrix(temp,a); a=mutimatrix(a,a);
n>>=;
}
return temp;
} int main()
{
LL n;
while(scanf("%lld",&n)!=EOF)
{
//前面四个手算下
if(n==)
{
printf("1\n");
continue;
}
if(n==)
{
printf("5\n");
continue;
}
if(n==)
{
printf("11\n");
continue;
}
if(n==)
{
printf("36\n");
continue;
} matrix st;
memset(st.x,,sizeof(st.x));
st.x[][]=;
st.x[][]=;
st.x[][]=;
st.x[][]=-; st.x[][]=;
st.x[][]=;
st.x[][]=; matrix init;//初始矩阵
memset(init.x,,sizeof(init.x)); init.x[][]=;
init.x[][]=;
init.x[][]=;
init.x[][]=; st=k_powmatrix(st,n-);//经过n-4次相乘
st=mutimatrix(init,st);//然后再乘上初始矩阵 printf("%lld\n",(st.x[][]+mod)%mod);
}
return ;
}

2018-08-09

hdu 6185 递推+【矩阵快速幂】的更多相关文章

  1. hdu 6185 递推+矩阵快速幂

    思路:考虑全部铺满时,前2列的放法.有如下5种情况:(转自http://blog.csdn.net/elbadaernu/article/details/77825979 写的很详细 膜一下)  假设 ...

  2. hdu 2604 递推 矩阵快速幂

    HDU 2604 Queuing (递推+矩阵快速幂) 这位作者讲的不错,可以看看他的 #include <cstdio> #include <iostream> #inclu ...

  3. HDU 2842 (递推+矩阵快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2842 题目大意:棒子上套环.第i个环能拿下的条件是:第i-1个环在棒子上,前i-2个环不在棒子上.每个 ...

  4. Recursive sequence HDU - 5950 (递推 矩阵快速幂优化)

    题目链接 F[1] = a, F[2] = b, F[i] = 2 * F[i-2] + F[i-1] + i ^ 4, (i >= 3) 现在要求F[N] 类似于斐波那契数列的递推式子吧, 但 ...

  5. HDU Queuing(递推+矩阵快速幂)

    Queuing Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  6. HDU 5950 Recursive sequence 【递推+矩阵快速幂】 (2016ACM/ICPC亚洲区沈阳站)

    Recursive sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Other ...

  7. HDU - 6185 Covering(暴搜+递推+矩阵快速幂)

    Covering Bob's school has a big playground, boys and girls always play games here after school. To p ...

  8. [hdu 2604] Queuing 递推 矩阵快速幂

    Problem Description Queues and Priority Queues are data structures which are known to most computer ...

  9. HDU6030 Happy Necklace(递推+矩阵快速幂)

    传送门:点我 Little Q wants to buy a necklace for his girlfriend. Necklaces are single strings composed of ...

  10. 五校联考R1 Day1T3 平面图planar(递推 矩阵快速幂)

    题目链接 我们可以把棱柱拆成有\(n\)条高的矩形,尝试递推. 在计算的过程中,第\(i\)列(\(i\neq n\))只与\(i-1\)列有关,称\(i-1\)列的上面/下面为左上/左下,第\(i\ ...

随机推荐

  1. F - 回转寿司 (权值线段树)

    题目链接:https://cn.vjudge.net/contest/281960#problem/F 题目大意:中文题目 具体思路:权值线段树,我们每次寻找的是满足 (i<j)   L< ...

  2. weblogic对JSP预编译、weblogic读取JSP编译后的class文件、ant中weblogic.jspc预编译JSP

    我们都知道在weblogic中JSP是每次第一次访问的时候才会编译,这就造成第一次访问某个JSP的时候性能下降,有时候我们也希望JSP被编译成class然后打包在jar中实现隐藏JSP的功能,下面介绍 ...

  3. Web下文件上传下载的路径问题

    工程结构

  4. ubuntu 14.04 软件中心闪退解决方案

    法一: gksudo gedit /usr/share/software-center/softwarecenter/ui/gtk3/views/lobbyview.py 注释下面这句话(注释使用#号 ...

  5. SpringBoot缓存

    (1).使用@EnableCaching注解开启基于注解的缓存 package cn.coreqi; import org.springframework.boot.SpringApplication ...

  6. UML和模式应用5:细化阶段(6)---操作契约

    1.前言 操作契约使用前置和后置条件,描述领域模型里对象的详细变化,作为系统操作的结果. 操作契约可以作为有用的OOA相关的制品. 操作契约可以视为UP用例模型的一部分,它是对用例之处的系统操作的效用 ...

  7. 四种加载React数据的技术对比(Meteor 转)

    1.四种加载React数据的技术对比(Meteor 转) : https://sanwen8.cn/p/31e4kdE.html 2. Meteor + Appolo   TelescopeJS/Te ...

  8. weblogic实时监控开发

    参考api文档 https://docs.oracle.com/cd/E13222_01/wls/docs90/wlsmbeanref/core/index.html https://docs.ora ...

  9. __ATTRIBUTE__ 知多少?

    GNU C 的一大特色就是__attribute__ 机制.__attribute__ 可以设置函数属性(Function Attribute ).变量属性(Variable Attribute )和 ...

  10. eclipse指定项目编译级别

    指定项目编译级别Eclipse→Preferences→Java→Compiler→Compiler compliance level:1.6或其他 或者,