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

题目意思:给出一个n,算这个式子,给出A0,B0,AX,AY,然后存在以下的递推关系。

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

构造矩阵的思路先算ai,bi,然后算Aod(i),然后再求和,说明这个一定是一个4*4的矩阵,我们可以构造以下系数矩阵(构造矩阵技巧可能会准备专门总结一下):

[    1 ,          0 ,    0 , 0 ,  0]
[Ax*Bx ,Ax*Bx , 0 , 0 ,  0]
[Ay*Bx ,Ay*Bx ,Bx ,0 ,  0]
[Ax*By ,Ax*By ,0 ,Ax ,  0]
[Ay*By ,Ay*By ,By ,Ay ,1]

有这个系数矩阵以后就很简单,就是普通矩阵快速幂,其实这个矩阵挺容易构造的。

代码:

 //Author: xiaowuga
#include <bits/stdc++.h>
#define maxx INT_MAX
#define minn INT_MIN
#define inf 0x3f3f3f3f
#define n 5
#define mod 1000000007
using namespace std;
typedef long long ll;
ll a0,b0,ax,bx,ay,by;
struct Matrix{
ll mat[][];
Matrix operator * (const Matrix & m) const{
Matrix tmp;
for(int i=;i<n;i++)
for(int j=;j<n;j++){
tmp.mat[i][j]=;
for(int k=;k<n;k++){
tmp.mat[i][j]+=mat[i][k]*m.mat[k][j]%mod;
tmp.mat[i][j]%=mod;
}
}
return tmp;
}
};
Matrix q_power(Matrix a,ll k){
Matrix ans;
memset(ans.mat,,sizeof(ans.mat));
for(int i=;i<n;i++) ans.mat[i][i]=;
while(k){
if(k&) ans=ans*a;
k/=;
a=a*a;
}
return ans; }
int main() {
ios::sync_with_stdio(false);cin.tie();
ll T;
while(cin>>T>>a0>>ax>>ay>>b0>>bx>>by){
if(T==){cout<<<<endl;continue;}
Matrix m;
memset(m.mat,,sizeof(m.mat));
m.mat[][]=m.mat[][]=ax*bx%mod;
m.mat[][]=ax*by%mod;m.mat[][]=ax%mod;m.mat[][]=ax*by%mod;
m.mat[][]=bx*ay%mod;m.mat[][]=bx%mod; m.mat[][]=bx*ay%mod;
m.mat[][]=by*ay%mod;m.mat[][]=ay%mod;m.mat[][]=by%mod;m.mat[][]=;m.mat[][]=by*ay%mod;
m.mat[][]=;
Matrix p=q_power(m,T-);
Matrix f;
memset(f.mat,,sizeof(f.mat));
f.mat[][]=f.mat[][]=a0*b0%mod;f.mat[][]=a0%mod;f.mat[][]=b0%mod;f.mat[][]=;
f=f*p;
cout<<f.mat[][]<<endl;
}
return ;
}

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 2013 Multi-University Training Contest 9矩阵快速幂

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

  5. hdu4686 Arc of Dream

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

  6. 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 ...

  7. HDU4686 Arc of Dream 矩阵

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - HDU4686 题意概括 a0 = A0 ai = ai-1*AX+AY b0 = B0 bi = bi-1* ...

  8. hdu4686 Arc of Dream ——构造矩阵+快速幂

    link: http://acm.hdu.edu.cn/showproblem.php?pid=4686 构造出来的矩阵是这样的:根据题目的ai * bi = ……,可以发现 矩阵1 * 矩阵3 = ...

  9. HDU-4686 Arc of Dream 构造矩阵

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4686 因为ai = ai-1*AX+AY ,bi = bi-1*BX+BY ,那么ai*bi=AX*B ...

随机推荐

  1. SpringBoot接口服务处理Whitelabel Error Page

    转载请注明来源:http://blog.csdn.net/loongshawn/article/details/50915979 <SpringBoot接口服务处理Whitelabel Erro ...

  2. CGROUP相关知识

    安装 CentOS 6 yum install libcgroup CentOS 7 yum install libcgroup-tools 使用 默认情况下有几个控制器可以进行限制,分别是 cpus ...

  3. Git代码仓库的建立流程

    Git作为现在比较流行的版本管理工具,其配置非常简单.方便. 下面举一个简单例子,说明如何在服务器上建立一个公共的git代码仓库. 1.确保服务器上已经打开ssh服务,可以用ps -e | grep ...

  4. hive 中与mysql 中函数同名不同意的方法记录

    max 函数 在hive中max函数是一个聚合函数,所以,而且返回值是double ,而且后面必须跟group by ,这个和mysql差异很大 Built-in Aggregate Function ...

  5. Odoo 8.0 new API 概述

    相对于7来说,8的api改进了不少,用官方的话来说就是更加面向对象了. 下面探究一下具体的改动. 准备知识:python装饰器的使用 http://blog.csdn.net/thy38/articl ...

  6. [Busybox]Busybox制作文件系统

    问题: 1.目前busybox和bootstrap两种方案制作文件系统,哪种开发周期更短,更加简单? 2.如果需要在文件系统中添加某个package,要怎么做,如vim/udhcpd等? 转自:htt ...

  7. [kernel]内核日志及printk结构分析

    一直都知道内核printk分级机制,但是没有去了解过,前段时间和一个同事聊到开机启动打印太多,只需要设置一下等级即可:另外今天看驱动源码,也看到类似于Printk(KERN_ERR "... ...

  8. UP与瀑布模型

    软件开发过程(Software development process)描述了构造.部署以及维护软件的方式.(就是先做什么后做什么)统一过程(The Unified Software Developm ...

  9. Hibernate Annotations 注解

    Hibernate Annotations 注解 对于org.hibernate.annotations与org.hibernate.persistence,它的注释比如Columns,可是不知道怎么 ...

  10. 【BZOJ】1611: [Usaco2008 Feb]Meteor Shower流星雨(bfs)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1611 一眼题,bfs. #include <cstdio> #include <c ...