【HDU 5015】233 Matrix
【题目链接】
http://acm.hdu.edu.cn/showproblem.php?pid=5015
【算法】
矩阵乘法
【代码】
#include<bits/stdc++.h>
using namespace std;
const int P = ; int i,j,n,m,ans;
int a[],val[]; struct Matrix
{
int mat[][];
} b; inline void multipy(Matrix &a,Matrix b)
{
int i,j,k;
Matrix res;
memset(res.mat,,sizeof(res.mat));
for (i = ; i <= n + ; i++)
{
for (j = ; j <= n + ; j++)
{
for (k = ; k <= n + ; k++)
{
res.mat[i][j] = (res.mat[i][j] + 1ll * a.mat[i][k] * b.mat[k][j]) % P;
}
}
}
a = res;
}
inline Matrix power(Matrix a,int n)
{
Matrix res;
memcpy(res.mat,a.mat,sizeof(a.mat));
n--;
while (n > )
{
if (n & ) multipy(res,a);
multipy(a,a);
n >>= ;
}
return res;
} int main()
{ while (scanf("%d%d",&n,&m) != EOF)
{
ans = ;
a[] = ;
for (i = ; i <= n; i++) scanf("%d",&a[i]);
val[] = ;
for (i = ; i <= n; i++) val[i] = (val[i-] % P + a[i] % P) % P;
val[n+] = ;
if (m == )
{
printf("%d\n",val[n]);
continue;
}
memset(b.mat,,sizeof(b.mat));
for (i = ; i <= n; i++)
{
b.mat[i][] = ;
b.mat[i][n+] = ;
for (j = ; j <= n; j++)
{
b.mat[i][j] = (i >= j);
}
}
b.mat[n+][n+] = ;
b = power(b,m-);
for (i = ; i <= n + ; i++) ans = (ans + 1ll * b.mat[n][i] * val[i]) % P;
printf("%d\n",ans); } return ; }
【HDU 5015】233 Matrix的更多相关文章
- 【数位dp】【HDU 3555】【HDU 2089】数位DP入门题
[HDU 3555]原题直通车: 代码: // 31MS 900K 909 B G++ #include<iostream> #include<cstdio> #includ ...
- 【HDU 5647】DZY Loves Connecting(树DP)
pid=5647">[HDU 5647]DZY Loves Connecting(树DP) DZY Loves Connecting Time Limit: 4000/2000 MS ...
- -【线性基】【BZOJ 2460】【BZOJ 2115】【HDU 3949】
[把三道我做过的线性基题目放在一起总结一下,代码都挺简单,主要就是贪心思想和异或的高斯消元] [然后把网上的讲解归纳一下] 1.线性基: 若干数的线性基是一组数a1,a2,a3...an,其中ax的最 ...
- 【HDU 2196】 Computer(树的直径)
[HDU 2196] Computer(树的直径) 题链http://acm.hdu.edu.cn/showproblem.php?pid=2196 这题可以用树形DP解决,自然也可以用最直观的方法解 ...
- 【HDU 2196】 Computer (树形DP)
[HDU 2196] Computer 题链http://acm.hdu.edu.cn/showproblem.php?pid=2196 刘汝佳<算法竞赛入门经典>P282页留下了这个问题 ...
- 【HDU 5145】 NPY and girls(组合+莫队)
pid=5145">[HDU 5145] NPY and girls(组合+莫队) NPY and girls Time Limit: 8000/4000 MS (Java/Other ...
- 【HDU 2157】 How Many Ways??
[题目链接] 点击打开链接 [算法] 设A[i][j]为走一条边,从i走到j的方案数 C[i][j]为走两条边,从i走到j的方案数,显然有 : C = A * A = A^2 C'[i][j]为走三条 ...
- 【HDU 1005】 Number Sequence
[题目链接] 点击打开链接 [算法] 矩阵乘法快速幂,即可 [代码] #include<bits/stdc++.h> using namespace std; int a,b,n; str ...
- 【HDU 1588】 Gauss Fibonacci
[题目链接] 点击打开链接 [算法] 要求 f(g(0)) + f(g(1)) + f(g(2)) + ... + f(g(n-1)) 因为g(i) = k * i + b 所以原式 = f(b) + ...
随机推荐
- window下svn开机自动启动
- DataTable和DataRow和DataColumn ~~~~~~~~~~[][]
DataSet.Tables[0].Rows[0][1]表示DataSet中第一张表(因为Tables[0]就是第一张表的意思)中第一行(Rows[0][]) 第二列(Rows[][1])的数据. D ...
- vue2 阻止时间冒泡
click.stop.prevent <div class="content-right" @click.stop.prevent="pay" > ...
- IAAS: IT公司去IOE-Alibaba系统构架解读
从Hadoop到自主研发,技术解读阿里去IOE后的系统架构 原地址:...................... 云计算阿里飞天 摘要:从IOE时代,到Hadoop与飞天并行,再到飞天单集群5000节 ...
- 给DBA 的mysql脚本格式
- xshell登录centos7很慢解决办法
使用xshell登录到centos系统虚拟机,可以登录上去,但是认证速度特别慢. 因为在登录时,需要反向解析dns,因此,修改linux配置文件,vi /etc/ssh/sshd_config,将其注 ...
- Javase范式
package Xwxx; import java.util.ArrayList; import java.util.Iterator; import java.util.function.IntBi ...
- 洛谷P1231 教辅的组成 最大流
裸题… Code: #include<cstdio> #include<cstring> #include<algorithm> #include<vecto ...
- python海龟的使用
############################螺旋正方形############################### import turtle turtle.left(90)for i ...
- ELO kernels 记录
these kernel for discuss how to handle outliers in target values. 一:Ashish Gupta: 在16年6月到18年8月,激活卡的人 ...