题目:http://acm.hdu.edu.cn/showproblem.php?pid=5411

题意:按题目转化的意思是,给定N和M,再给出一些边(u,v)表示u和v是连通的,问走0,1,2.....M步的方案数。

分析:这题和 hdu5318 The Goddess Of The Moon差点儿相同,就是多了一个等比数列求和

代码:

#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
const int mod = 2015;
int N,M;
struct Matrix
{
int M[55][55];
Matrix(){memset(M,0,sizeof(M));}
}U,P; Matrix Add(const Matrix &a,const Matrix &b)
{
Matrix ret;
for(int i=1;i<=N;i++)
for(int j=1;j<=N;j++)
ret.M[i][j]=(a.M[i][j]+b.M[i][j])%mod;
return ret;
} Matrix Multi(const Matrix &a,const Matrix &b)
{
Matrix ret;
for(int i=1;i<=N;i++)
{
for(int j=1;j<=N;j++)
{
for(int k=1;k<=N;k++)
ret.M[i][j]+=a.M[i][k]*b.M[k][j];
ret.M[i][j]%=mod;
}
}
return ret;
}
Matrix Pow(Matrix f,int n) //f^n,U为单位矩阵
{
Matrix ret=U;
while(n)
{
if(n&1)
ret=Multi(ret,f);
n>>=1;
f=Multi(f,f);
}
return ret;
} Matrix solve(int n) //等比数列求和
{
if(n==1)
return P;
Matrix temp=solve(n>>1);
if(n&1)
{
Matrix t=Pow(P,n/2+1);
return Add(Add(Multi(temp,t),temp),t);
}
else
return Add(temp,Multi(temp,Pow(P,n>>1)));
} int main()
{
int ncase,i,j,k,x;
for(i=0;i<55;i++)
U.M[i][i]=1;
scanf("%d",&ncase);
while(ncase--)
{
scanf("%d%d",&N,&M);
memset(P.M,0,sizeof(P.M));
for(i=1;i<=N;i++)
{
scanf("%d",&k);
while(k--)
{
scanf("%d",&x);
P.M[i][x]=1;
}
}
if(M==1)
{
printf("%d\n",N+1);
continue ;
}
Matrix temp=solve(M-1);
int ans=N+1;
for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
ans+=temp.M[i][j];
printf("%d\n",ans%mod);
}
return 0;
}

hdu 5411 CRB and Puzzle (矩阵高速幂优化dp)的更多相关文章

  1. hdu 5411 CRB and Puzzle 矩阵高速幂

    链接 题解链接:http://www.cygmasot.com/index.php/2015/08/20/hdu_5411/ 给定n个点 常数m 以下n行第i行第一个数字表示i点的出边数.后面给出这些 ...

  2. HDOJ 5411 CRB and Puzzle 矩阵高速幂

    直接构造矩阵,最上面一行加一排1.高速幂计算矩阵的m次方,统计第一行的和 CRB and Puzzle Time Limit: 2000/1000 MS (Java/Others)    Memory ...

  3. hdu5318 The Goddess Of The Moon (矩阵高速幂优化dp)

    题目:pid=5318">http://acm.hdu.edu.cn/showproblem.php?pid=5318 题意:给定n个数字串和整数m,规定若数字串s1的后缀和数字串s2 ...

  4. HDU 1588 Gauss Fibonacci(矩阵高速幂+二分等比序列求和)

    HDU 1588 Gauss Fibonacci(矩阵高速幂+二分等比序列求和) ACM 题目地址:HDU 1588 Gauss Fibonacci 题意:  g(i)=k*i+b;i为变量.  给出 ...

  5. 2018.10.23 bzoj1297: [SCOI2009]迷路(矩阵快速幂优化dp)

    传送门 矩阵快速幂优化dp简单题. 考虑状态转移方程: f[time][u]=∑f[time−1][v]f[time][u]=\sum f[time-1][v]f[time][u]=∑f[time−1 ...

  6. HDU 5411 CRB and puzzle (Dp + 矩阵高速幂)

    CRB and Puzzle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) T ...

  7. HDU 5411 CRB and Puzzle (2015年多校比赛第10场)

    1.题目描写叙述:pid=5411">点击打开链接 2.解题思路:本题实际是是已知一张无向图.问长度小于等于m的路径一共同拥有多少条. 能够通过建立转移矩阵利用矩阵高速幂解决.当中,转 ...

  8. HDU 2256 Problem of Precision(矩阵高速幂)

    题目地址:HDU 2256 思路: (sqrt(2)+sqrt(3))^2*n=(5+2*sqrt(6))^n; 这时要注意到(5+2*sqrt(6))^n总能够表示成an+bn*sqrt(6); a ...

  9. 2018.10.22 bzoj1009: [HNOI2008]GT考试(kmp+矩阵快速幂优化dp)

    传送门 f[i][j]f[i][j]f[i][j]表示从状态"匹配了前i位"转移到"匹配了前j位"的方案数. 这个东西单次是可以通过跳kmp的fail数组得到的 ...

随机推荐

  1. SQLCE使用

    Windows Phone的本地数据库SQL Server CE是7.1版本即芒果更新的新特性,所以你要在应用程序中使用SQL Server CE数据库必须使用Windows Phone 7.1的AP ...

  2. 【Devops】【docker】【CI/CD】2.docker启动jenkins环境+安装必要的插件

    [注意:]jenkins的docker镜像,需要从官网进入直接获取,其他地方获取到的docker镜像,可能因为Jenkins版本过低,导致后续插件安装失败等问题!!! ================ ...

  3. 解决html5 audio iphone,ipd,safari不能自动播放问题

    html audio 在iPhone,ipd,safari浏览器不能播放是有原因滴 (在safri on ios里面明确指出等待用户的交互动作后才能播放media,也就是说如果你没有得到用户的acti ...

  4. 根据UIScrollView的contentOffset值精确控制动画

    根据UIScrollView的contentOffset值精确控制动画 效果 原理 根据方程精确计算每一个view在位移值x变化的时候的输出值,并根据这个值实现各种逻辑. 源码 https://git ...

  5. Oracle初级索引学习总结

    前言  索引是常见的数据库对象,建立索引的目的是为了提高记录的检索速度.它的设置好坏,使用是否得当,极大地影响数据库应用程序和Database的性能.虽然有许多资料讲索引的用法,DBA和Develop ...

  6. 低版本系统兼容的ActionBar(三)自定义Item视图+进度条的实现+下拉导航+透明ActionBar

           一.自定义MenuItem的视图 custom_view.xml (就是一个单选按钮) <?xml version="1.0" encoding="u ...

  7. gradle新建工程,多项目依赖,聚合工程

    感谢gradle完全的文档.开始完全没想过新建项目会弄我一天时间,都说gradle构建项目简单,我现在回复他们呵呵. gradle是个非常复杂的工具,从他的完整包80M和72章官方文档就可以看出一二. ...

  8. JAVAWEB开发之HttpServletResponse和HttpServletRequest详解(上)(各种乱码、验证码、重定向和转发)

    HttpServletResponse简介 Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象 request和re ...

  9. MAPI错误0x80040107

    MAPI错误0x80040107  的解决方案: The MAPI error means there's an "invalid entry" within the contac ...

  10. Promise is rejected: Error: 2 UNKNOWN: error starting container: API error (404): {"message":"network build-blockchain-insurance-app_default not found"}出错的解决方案

    错误描述: docker logs web 现象: > blockchain-for-insurance@2.1.0 serve /app > cross-env NODE_ENV=pro ...