HDU 2254 奥运(矩阵+二分等比求和)
奥运
【题目链接】奥运
【题目类型】矩阵+二分等比求和
&题解:
首先离散化城市,之后就是矩阵快速幂了,但让求的是A(t1)+A(t1+1)+...+A^(t2),我先想的是打表,但时间真的太慢了,之后网上查的二分等比求和,这样logn就可以求等比矩阵的前n项和了
还有用二分等比求和时,矩阵最好用数组表示,尽量不用vector,我试了好几发,总是T,当然也有可能是我写的low了吧 - -
&代码:
#include <cstdio>
#include <bitset>
#include <iostream>
#include <set>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <map>
#include <queue>
#include <vector>
using namespace std;
#define INF 0x3f3f3f3f
typedef long long ll;
const int N= 30 +9;
struct Matrix
{
int m[N][N];
};
Matrix I,ZZ;
int n,m,M=2008;
Matrix add(Matrix a,Matrix b)
{
Matrix c;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
c.m[i][j]=(a.m[i][j]+b.m[i][j])%M;
return c;
}
Matrix multi(Matrix a,Matrix b)
{
Matrix c;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
c.m[i][j]=0;
for(int k=0;k<n;k++)
c.m[i][j]=(c.m[i][j]+a.m[i][k]*b.m[k][j])%M;
}
}
return c;
}
Matrix power(Matrix A,ll n)
{
Matrix ans=I;
while(n){
if(n&1)
ans=multi(ans,A);
A=multi(A,A);
n>>=1;
}
return ans;
}
Matrix sum(Matrix A,ll k)
{
if(k<=0) return ZZ;
if(k==1) return A;
// cout<<"k="<<k<<endl;
Matrix t=sum(A,k/2);
Matrix cur=power(A,k/2+(k&1));
t=add(t,multi(t,cur));
if(k&1) t=add(t,cur);
return t;
}
int v1,v2,t1,t2;
map<int,int> tb;
int main()
{
freopen("E:1.txt","r",stdin);
while(cin>>n){
Matrix gra;
//一定记得要初始化啊 矩阵I ZZ 和gra
tb.clear();
for(int i=0;i<35;i++){
I.m[i][i]=1;
for(int j=0;j<35;j++){
ZZ.m[i][j]=0;
gra.m[i][j]=0;
}
}
int ct=0;
for(int i=0;i<n;i++){
int u,v;
cin>>u>>v;
if(tb[u]==0)
tb[u]=++ct;
if(tb[v]==0)
tb[v]=++ct;
gra.m[tb[u]-1][tb[v]-1]++;
gra.m[tb[u]-1][tb[v]-1]%=M;
}
cin>>m;
for(int i=0;i<m;i++){
cin>>v1>>v2>>t1>>t2;
if(!tb[v1]||!tb[v2]){
puts("0");
}
else{
Matrix an1=sum(gra,t2);
Matrix an2=sum(gra,t1-1);
//这块 处理的时候减1了 输入地图的时候也要减1啊
cout<<((an1.m[tb[v1]-1][tb[v2]-1]-an2.m[tb[v1]-1][tb[v2]-1])%M+M)%M<<endl;
}
}
}
return 0;
}
HDU 2254 奥运(矩阵+二分等比求和)的更多相关文章
- HDU 2254 奥运(矩阵高速幂+二分等比序列求和)
HDU 2254 奥运(矩阵高速幂+二分等比序列求和) ACM 题目地址:HDU 2254 奥运 题意: 中问题不解释. 分析: 依据floyd的算法,矩阵的k次方表示这个矩阵走了k步. 所以k ...
- hdu 2254 奥运
点击打开hdu 2254 思路: 矩阵乘法 分析: 1 题目给定一个有向图,要求t1-t2天内v1-v2的路径的个数 2 根据离散数学里面的可达矩阵的性质,我们知道一个有向图的邻接矩阵的前n次幂的和即 ...
- HDU 2254 奥运(数论+矩阵)
题目中文的不解释啊. .. 须要注意的就是:离散数学中,有向图的邻接矩阵A表示全部点之间路径长度为1的路径数量,A^n则表示路径长度为n的路径数量.故须要求某两点在(A^t1)~(A^t2)的路径数量 ...
- HDU - 2254 奥运 (求等比数列和)
Description 北京迎来了第一个奥运会,我们的欢呼声响彻中国大地,所以今年的奥运金牌 day day up! 比尔盖兹坐上鸟巢里,手里摇着小纸扇,看的不亦乐乎,被俺们健儿的顽强拼搏的精神深深的 ...
- hdu 2254 奥运(邻接矩阵应用)
Problem Description 北京迎来了第一个奥运会,我们的欢呼声响彻中国大地,所以今年的奥运金牌 day day up! 比尔盖兹坐上鸟巢里,手里摇着小纸扇,看的不亦乐乎,被俺们健儿的顽强 ...
- hdu 2254(矩阵)
题意:指定v1,v2,要求计算出在t1,t2天内从v1->v2的走法 思路:可以知道由矩阵求,即将其建图A,求矩阵A^t1 + ...... + A^t2. A^n后,/*A.xmap[v1 ...
- POJ 3233 Matrix Power Series(二分等比求和)
Matrix Power Series [题目链接]Matrix Power Series [题目类型]二分等比求和 &题解: 这题我原来用vector写的,总是超时,不知道为什么,之后就改用 ...
- UVA-10689 Yet another Number Sequence (矩阵二分幂模板)
题目大意:已知递推公式和边缘值,求某项的最后m(0<m<5)位数字. 题目分析:矩阵二分幂的模板题. 代码如下: # include<iostream> # include&l ...
- HDU.2640 Queuing (矩阵快速幂)
HDU.2640 Queuing (矩阵快速幂) 题意分析 不妨令f为1,m为0,那么题目的意思为,求长度为n的01序列,求其中不含111或者101这样串的个数对M取模的值. 用F(n)表示串长为n的 ...
随机推荐
- qs.parse()、qs.stringify()使用方法
qs是一个npm仓库所管理的包,可通过npm install qs命令进行安装. 1. qs.parse()将URL解析成对象的形式 const Qs = require('qs'); let url ...
- python--列表、字典、元组、集合对比
数据类型# 计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定义不同的数据类型.# a:整形和浮点型(正数和负数)# b:布尔类型(true,fals ...
- ASM X86&&X64 Registers 对寄存器ESP和EBP的一些理解
ESP EIP EBP : frame pointer(base address of stack) Calling Convention: 调用约定 为什么fun调用之后 esp -ebp = 20 ...
- 转:Eclipse 各种小图标的含义
原文地址:https://www.cnblogs.com/widget90/p/7592507.html Eclipse 各种小图标的含义,记录一下. Eclipse的Package Explorer ...
- Java之旅_面向对象_多态
参考并摘自:http://www.runoob.com/java/java-polymorphism.html 多态 多态是一个行为具有多个不同表现形式的能力. 多态就是同一个接口,使用不同的实例而执 ...
- nginx最基本操作
1.安装 yum install nginx 2.查看配置位置 nginx -t 3.查看nginx.conf,找到默认html配置路径 vi /etc/nginx/nginx.conf cd /us ...
- jquery图片懒加载效果
1.要引入jquery 2.要引入underscore.js <!DOCTYPE html> <html lang="en"> <head> & ...
- springmvc拦截器实现用户登录权限验证
实现用户登录权限验证 先看一下我的项目的目录,我是在intellij idea 上开发的 1.先创建一个User类 package cn.lzc.po; public class User { pri ...
- django基础-02:虚拟环境
4. 虚拟环境 4.1 概念 之前安装python包的命令: sudo pip3 install 包名 包的安装路径:/usr/local/lib/python3.5/dist-packages 在同 ...
- Uncontrolled memory mapping in camera driver (CVE-2013-2595)
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/hu3167343/article/details/34434235 /* 本文章由 莫灰灰 编写,转 ...