欢迎访问~原文出处——博客园-zhouzhendong

去博客园看该题解


题目传送门 - HDU4686


题意概括

  

  a0 = A0
  ai = ai-1*AX+AY
  b0 =
B0
  bi = bi-1*BX+BY

  求AoD(n)

  n=0时答案为0!!!!


题解

  具体的矩阵构建思路指导可以参考例题链接

  这里仅提供运算过程。

  Ai=Ai-1*AX+AY

  Bi=Bi-1*BX+BY

  AiBi=(Ai-1*AX+AY)(Bi-1*BX+BY)

        =AX*BX*Ai-1*Bi-1+AX*BY*Ai-1+BX*AY*Bi-1+AY*BY

        Si           AiBi       Ai     Bi        K

Si-1            1     0       0    0     0

Ai-1Bi-1     AX*BX   AX*BX     0    0     0

Ai-1         AX*BY   AX*BY       AX     0     0

Bi-1          BX*AY   BX*AY      0     BX    0

K          AY*BY   AY*BY       AY    BY    1

  初始矩阵:

  S0        A0B0       A0     B0   K

  A0*B0       A0*B0           A0     B0     1


代码

#include <cstring>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <cstdlib>
using namespace std;
typedef long long LL;
const LL mod=1000000007,m=5;
LL n,A0,AX,AY,B0,BX,BY;
struct Mat{
LL v[m][m];
Mat (){}
Mat (LL x){
(*this).set(x);
}
void set(LL x){
memset(v,0,sizeof v);
if (x==1)
for (int i=0;i<m;i++)
v[i][i]=1;
}
Mat operator * (Mat x){
Mat ans(0);
for (int i=0;i<m;i++)
for (int j=0;j<m;j++)
for (int k=0;k<m;k++)
ans.v[i][j]=(ans.v[i][j]+v[i][k]*x.v[k][j])%mod;
return ans;
}
void operator *= (Mat x){
(*this)=(*this)*x;
}
}M,Md;
Mat MatPow(Mat x,LL y){
Mat ans(1),now=x;
while (y){
if (y&1LL)
ans*=now;
now*=now;
y>>=1;
}
return ans;
}
int main(){
while (~scanf("%lld%lld%lld%lld%lld%lld%lld",&n,&A0,&AX,&AY,&B0,&BX,&BY)){
if (!n){
puts("0");
continue;
}
A0%=mod,AX%=mod,AY%=mod,B0%=mod,BX%=mod,BY%=mod;
LL NewArr[m][m]={{1 ,0 ,0 ,0 ,0},
{AX*BX%mod ,AX*BX%mod ,0 ,0 ,0},
{AX*BY%mod ,AX*BY%mod ,AX ,0 ,0},
{BX*AY%mod ,BX*AY%mod ,0 ,BX ,0},
{AY*BY%mod ,AY*BY%mod ,AY ,BY ,1}};
LL NewArr2[m]= {A0*B0%mod ,A0*B0%mod ,A0 ,B0 ,1};
memcpy(Md.v,NewArr,sizeof NewArr);
memcpy(M.v[0],NewArr2,sizeof NewArr2);
Md=MatPow(Md,n-1);
M*=Md;
printf("%lld\n",M.v[0][0]);
}
return 0;
}

  

HDU4686 Arc of Dream 矩阵的更多相关文章

  1. HDU4686 Arc of Dream —— 矩阵快速幂

    题目链接:https://vjudge.net/problem/HDU-4686 Arc of Dream Time Limit: 2000/2000 MS (Java/Others)    Memo ...

  2. HDU4686 Arc of Dream 矩阵快速幂

    Arc of Dream Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Tota ...

  3. hdu----(4686)Arc of Dream(矩阵快速幂)

    Arc of Dream Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Tota ...

  4. HDU4686——Arc of Dream矩阵快速幂

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4686 题目大意: 已知a0=A0, ai=Ax*ai-1+Ay; b0=B0, bi=Bx*bi-1 ...

  5. hdu4686 Arc of Dream 2013 Multi-University Training Contest 9矩阵快速幂

    Arc of Dream Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Tot ...

  6. HDU 4686 Arc of Dream(矩阵)

    Arc of Dream [题目链接]Arc of Dream [题目类型]矩阵 &题解: 这题你做的复杂与否很大取决于你建的矩阵是什么样的,膜一发kuangbin大神的矩阵: 还有几个坑点: ...

  7. HDOJ 4686 Arc of Dream 矩阵高速幂

    矩阵高速幂: 依据关系够建矩阵 , 高速幂解决. Arc of Dream Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 65535/ ...

  8. S - Arc of Dream 矩阵快速幂

    An Arc of Dream is a curve defined by following function: where a 0 = A0 a i = a i-1*AX+AY b 0 = B0  ...

  9. hdu4686 Arc of Dream

    Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submission ...

随机推荐

  1. u-boot移植(六)---代码修改---串口

    一.代码流程 1.1 串口代码 程序流程图如下: default_serial_console 执行的代码如下: 在JZ2440.H中有如下定义: 则执行结构体s3c24xx_serial0_devi ...

  2. 虚拟机centos7系统下安装hadoop ha和yarn ha(详细)

    一:基础环境准备 (一):虚拟机新建五个centos7系统(复制文件夹的方式) (二):角色分配 (三)按照角色分配表配置 (1)更改主机ip(自行查找),如果只是个人搭建玩一玩,可选择安装cento ...

  3. UE4的AI学习(2)——官方案例实例分析

    官方给出的AI实例是实现一个跟随着玩家跑的AI,当玩家没有在AI视野里时,它会继续跑到最后看到玩家的地点,等待几秒后如果仍然看不到玩家,则跑回初始地点.官方的案例已经讲得比较详细,对于一些具体的函数调 ...

  4. 【加密】Md5Util

    import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class Md5U ...

  5. oracle_数据库对象

  6. Linux安装后首次设置root密码

    ① 1.sudo password root //给指定用户设置密码 2.sudo passwd root //给指定用户设置密码 ②su root //切换到指定用户

  7. 【逆向工具】IDA使用2-VS2015版本release查找main函数入口,局部变量

    VS2015版本release查找main函数入口 vc++开发的程序main或WinMain函数是语法规定的用户入口,而不是应用程序入口.入口代码是mainCRTstartup.wmainCRTSt ...

  8. Linux mmc framework1:软件架构

    [部分内容来自] http://www.wowotech.net/comm/mmc_framework_arch.html 1. 前言 由eMMC基础技术1:MMC简介中MMC.SD.SDIO的介绍可 ...

  9. pt-online-schema-change VS oak-online-alter-table

    前言 在上篇文章中提到了MySQL 5.6 Online DDL,如果是MySQL 5.5的版本在DDL方面是要付出代价的,虽然已经有了Fast index Creation,但是在添加字段还是会锁表 ...

  10. NTFS文件系统简介

    原文地址:http://www.cnblogs.com/watertao/archive/2011/11/28/2266595.html 1.简介 NTFS(New Technology File S ...