HDU4686—Arc of Dream
题目链接: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的更多相关文章
- HDU4686 Arc of Dream —— 矩阵快速幂
题目链接:https://vjudge.net/problem/HDU-4686 Arc of Dream Time Limit: 2000/2000 MS (Java/Others) Memo ...
- HDU4686 Arc of Dream 矩阵快速幂
Arc of Dream Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Tota ...
- hdu----(4686)Arc of Dream(矩阵快速幂)
Arc of Dream Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Tota ...
- 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 ...
- hdu4686 Arc of Dream
Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Total Submission ...
- 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 ...
- HDU4686 Arc of Dream 矩阵
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - HDU4686 题意概括 a0 = A0 ai = ai-1*AX+AY b0 = B0 bi = bi-1* ...
- hdu4686 Arc of Dream ——构造矩阵+快速幂
link: http://acm.hdu.edu.cn/showproblem.php?pid=4686 构造出来的矩阵是这样的:根据题目的ai * bi = ……,可以发现 矩阵1 * 矩阵3 = ...
- 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 ...
随机推荐
- SVN 安装后报不是内部或外部命令
SVN安装后报不是内部或外部命令,也不是可运行的程序 解决方法:windows安装svn的时候默认是不安装 svn command line这个东西的,重新打开svn的安装exe,选择modify,将 ...
- rip中的连续子网以及不连续子网
RIPv1 RIPv2 距离矢量2 距离矢量 最大跳计数15 最大跳计数15 有类的 无类的 基于广播的 基于组播224.0.09 不支持VLSM 支持VLSM 无认证 允许MD5认证 不支持不 ...
- Mac OS下配置PHP Nginx PHP-FPM
首先需要安装homebrew, 不赘述了 php-fpm php-fpm是mac下自带的软件, 而且兼容不同的PHP版本, 不用额外安装, 但是fpm是需要配置的, 在/private/etc下有个模 ...
- filebeat+kafka失败
filebeat端配置 #----------------------------- Kafka output -------------------------------- output.kafk ...
- 一款基于的jQuery仿苹果样式焦点图插件
这次我们要分享的这款jQuery焦点图非常特别,它的外观特别简单,但是又相当大气.焦点图的整体样式是仿苹果样式的,由于jQuery的运用,我们只要点击图片下方的缩略图即可达到图片切换的焦点图特效,这款 ...
- swift百度地图api
swift使用百度地图api遇到的坑 之前在Android上用过百度地图,以为大概类似,也没仔细看文档,结果被自己坑了 注意事项,http://developer.baidu.com/map/inde ...
- STM32CubeMX软件工程描述_USART配置过程
推荐 分享一个朋友的人工智能教程,零基础!通俗易懂!希望你也加入到人工智能的队伍中来! http://www.captainbed.net/strongerhuang Ⅰ.写在前面 学习本文之前可以查 ...
- 重启oracle方法一二三
startup nomount alter database mount alter database open Linux:方法1 用root以ssh登录到linux,打开终端输入以下命令: cd ...
- nginx 的 autoindex on首页不显示的问题 按照下面几行要写上不然不行
[root@test html]# vim ../conf/nginx.confworker_processes 1;events { worker_connections 1024;}ht ...
- POST GET 请求示例
HTTP GET 请求代码: HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.baidu.com ...