题意:指定v1,v2,要求计算出在t1,t2天内从v1->v2的走法

思路:可以知道由矩阵求,即将其建图A,求矩阵A^t1 + ...... + A^t2.   A^n后,/*A.xmap[v1][v2]即是从v1到v2要n步

所以先预处理出A^1 -A^10000的情况,后面再注意下细节,计算即可.

(每条道路走需要花一天的时间,且不能在某个城市停留,且t1=0时的走法数为0)

开始以为只要t1 = 0就输出0,结果不停WA,一直对照别人的代码- -

结果偶然发现这个特例,它喵的我也是醉了,才发现是题意理解错了,好惨...Orz

  1. 特例:
  2. Input:
  3. 1
  4. 1 1
  5. 1
  6. 1 1 0 1
  7. Ouput:
  8. 1
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<string>
#include<map>
#include<set>
#include<vector>
#include<queue>
#include<stack>
#include<functional>
using namespace std;
typedef long long ll;
const int mod=2008;
const int maxn=5e5;
map<int,int>has;
struct Maxtri
{
int xmap[30][30];
};
int siz;
Maxtri mat[10005]; Maxtri Mul(Maxtri &a,Maxtri &b)
{
Maxtri c;
for(int i=0; i<siz; i++)
{
for(int j=0; j<siz; j++)
{
c.xmap[i][j]=0;
for(int k=0; k<siz; k++)
{
c.xmap[i][j]+=a.xmap[i][k]*b.xmap[k][j];
c.xmap[i][j]%=mod;
}
}
}
return c;
} int main()
{
int n,u,v,k; int v1,v2,t1,t2;
while(scanf("%d",&n) != EOF)
{
siz = 0;
memset(mat[0].xmap,0,sizeof(mat[0].xmap));
has.clear();
for(int i = 1; i <= n; i++)
{
scanf("%d%d",&u,&v);
if(has.find(u)==has.end())
{
has[u]=siz++;
}
if(has.find(v)==has.end())
{
has[v]=siz++;
}
mat[0].xmap[has[u]][has[v]] ++;
} for(int i=1; i<10001; i++)
mat[i]=Mul(mat[i-1],mat[0]);
scanf("%d",&k);
while(k--)
{
scanf("%d%d%d%d",&v1,&v2,&t1,&t2);
if(has.find(v1)==has.end()||has.find(v2)==has.end() || (!t1 && !t2))
{
printf("0\n");
continue;
}
if(t1 > t2)
swap(t1,t2); int ans=0;
for(int i=t1-1; i<t2; i++)
{
if(i == -1)
continue;
ans= (ans + mat[i].xmap[has[v1]][has[v2]])%mod;
}
printf("%d\n",ans%mod);
}
}
return 0;
}

  

hdu 2254(矩阵)的更多相关文章

  1. HDU 2254 奥运(矩阵高速幂+二分等比序列求和)

    HDU 2254 奥运(矩阵高速幂+二分等比序列求和) ACM 题目地址:HDU 2254 奥运 题意:  中问题不解释. 分析:  依据floyd的算法,矩阵的k次方表示这个矩阵走了k步.  所以k ...

  2. HDU 2254

    http://acm.hdu.edu.cn/showproblem.php?pid=2254 矩阵乘法两个经典问题的综合题,还要离散化和处理边界,好题啊好题 题意容易理解错,每一天是独立的,所以根据加 ...

  3. hdu 2254 奥运

    点击打开hdu 2254 思路: 矩阵乘法 分析: 1 题目给定一个有向图,要求t1-t2天内v1-v2的路径的个数 2 根据离散数学里面的可达矩阵的性质,我们知道一个有向图的邻接矩阵的前n次幂的和即 ...

  4. hdu 4291 矩阵幂 循环节

    http://acm.hdu.edu.cn/showproblem.php?pid=4291 凡是取模的都有循环节-----常数有,矩阵也有,并且矩阵的更奇妙: g(g(g(n))) mod 109  ...

  5. HDU 2254 奥运(矩阵+二分等比求和)

    奥运 [题目链接]奥运 [题目类型]矩阵+二分等比求和 &题解: 首先离散化城市,之后就是矩阵快速幂了,但让求的是A^(t1)+A^(t1+1)+...+A^(t2),我先想的是打表,但时间真 ...

  6. 【矩阵快速幂】之奥运 hdu 2254

    1.城市的编号不是从0到n-1,而是随便的一个数字,需要离散化否则不能存相关信息 2.城市数不超过30,也就是说我的方法开矩阵不超过60,但是我残念的一开始以为最多可能有20000个不同城市    血 ...

  7. HDU 2254 奥运(数论+矩阵)

    题目中文的不解释啊. .. 须要注意的就是:离散数学中,有向图的邻接矩阵A表示全部点之间路径长度为1的路径数量,A^n则表示路径长度为n的路径数量.故须要求某两点在(A^t1)~(A^t2)的路径数量 ...

  8. HDU 2855 (矩阵快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2855 题目大意:求$S(n)=\sum_{k=0}^{n}C_{n}^{k}Fibonacci(k)$ ...

  9. HDU 4471 矩阵快速幂 Homework

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4471 解题思路,矩阵快速幂····特殊点特殊处理····· 令h为计算某个数最多须知前h个数,于是写 ...

随机推荐

  1. Markdown文本测试

    一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 1. 这是一 2. 这是二 这是无序符号 My Github 这是着重表示 这是斜体 一级粗体 二级斜体 cin >> a; c ...

  2. MySQL 服务安装及命令使用

    MySQL 服务安装及命令使用 课程来源说明 本节实验后续至第17节实验为本课程的进阶篇,都基于 MySQL 官方参考手册制作,并根据实验楼环境进行测试调整改编.在此感谢 MySQL 的开发者,官方文 ...

  3. Flask Markup 上下文,request

    在模板渲染中,使用Markup转换变量中的特殊字符 from flask import Markup Markup函数对字符串进行转移处理再传递给render_template()函数 在浏览器中显示 ...

  4. 2017 清北济南考前刷题Day 3 morning

    实际得分:100+0+0=100 T1 右上角是必败态,然后推下去 发现同行全是必胜态或全是必败态,不同行必胜必败交叉 列同行 所以n,m 只要有一个是偶数,先手必胜 #include<cstd ...

  5. L2 约束的最小二乘学习法

    \[ \begin{align*} &J_{LS}{(\theta)} = \frac { 1 }{ 2 } { \left\| \Phi \theta - y \right\| }^{ 2 ...

  6. php函数var_dump() 、print_r()、echo()

    var_dump() 能打印出类型 print_r() 只能打出值 echo() 是正常输出... 需要精确调试的时候用 var_dump(); 一般查看的时候用 print_r() 另外 , ech ...

  7. 测试驱动开发实践3————从testList开始

    [内容指引] 运行单元测试: 装配一条数据: 模拟更多数据测试列表: 测试无搜索列表: 测试标准查询: 测试高级查询. 一.运行单元测试 我们以文档分类(Category)这个领域类为例,示范如何通过 ...

  8. phalcon框架命名空间

    命名空间第一影像就是实际上就相当宏定义,就是需要把一个很长的带有路径的类文件指定一个空间,然后就可直接用简单简写模式 当然如果是外部文件需要首先引入外部文件,如果不引入外部文件还是会报错.一般最会出错 ...

  9. svn的使用技巧

    就是如果想一个文件在提交的时候不被上传,可以设置忽略这样提交的时候就不会被上传

  10. Sphinx主索引和增量索引来实现索引实时更新的关键步骤

    1.配置csft.conf文件 vim /etc/csft.conf # # Minimal Sphinx configuration sample (clean, simple, functiona ...