【xsy2748】 fly 矩阵快速幂
题目大意:有$n$个点,$m$条有向边,其中第$i$条边需要在$t_i$秒后才出现在图上。
有一个人刚开始呆在$1$号节点,每秒钟他必须要选择一条从他所在位置走出去的边,走出去(如果没有的话这人就死了)
问你他从$1$号点走到$n$号所需的最少时间。
数据范围:$n,m≤100,max(t_i)≤10^9$
此题貌似是一个套路题
令$vis[T][i]$表示在时刻$T$,是否能够到达$i$号节点
我们可以用$O(m)$的时间基于$vis[T][i]$求出$vis[T+1][i]$。
然而这么搞复杂度直接爆炸了。
我们把$vis[T]$看做是一个$1\times n$的矩阵,我们构造加入前i+1条边的图的邻接矩阵$A$(矩阵显然是$n\times n$的)
不难发现$vis[T+1]=vis[T]\times A$,这里的乘法是矩阵乘法。
单次矩乘的复杂度是$O(n^2)$,加入矩阵快速幂转移就是$O(n^2\log(t_{i+1}-t_i))$。
然而这么求我们只会求出$vis$数组的某一些项,然而某条边被加入后是一直存在的。
不难发现我们只需要在时刻$t_{i+1}$的基础上再走上$n$步,就可以知道是否可以在加入这条边后到达终点(结论显然)
然后就没有了
时间复杂度:$O(n^3\log T)$
#include<bits/stdc++.h>
#define M 105
#define INF 1234567890
using namespace std; struct mat{
bool a[M][M]; int n,m;
mat(){memset(a,,sizeof(a));}
mat(int nn,int mm){memset(a,,sizeof(a)); n=nn; m=mm;}
void set1(){memset(a,,sizeof(a)); for(int i=;i<=n;i++) a[i][i]=;}
friend mat operator *(mat a,mat b){
mat c=mat(a.n,b.m);
for(int i=;i<=a.n;i++)
for(int k=;k<=b.n;k++) if(a.a[i][k])
for(int j=;j<=a.m;j++)
c.a[i][j]|=a.a[i][k]&b.a[k][j];
return c;
}
friend mat operator ^(mat a,int b){
mat ans=mat(a.n,a.m); ans.set1();
while(b){
if(b&) ans=ans*a;
b=b>>; a=a*a;
}
return ans;
}
}a,b;
struct edge{
int u,v,t;
void rd(){scanf("%d%d%d",&u,&v,&t);}
friend bool operator <(edge a,edge b){return a.t<b.t;}
}p[M];
int n,m,ans=INF;
int main(){
scanf("%d%d",&n,&m);
a=mat(,n); b=mat(n,n); a.a[][]=;
if(n==) {printf("0\n"); return ;}
for(int i=;i<=m;i++) p[i].rd();
sort(p+,p+m+);
for(int i=;i<=m;i++){
mat hh=a;
b.a[p[i].u][p[i].v]=;
for(int j=;j<=n;j++){
hh=hh*b;
if(hh.a[][n]){
ans=min(ans,p[i].t+j);
break;
}
}
if(i<m) a=a*(b^(p[i+].t-p[i].t));
}
if(ans==INF) printf("Impossible\n");
else printf("%d\n",ans);
}
【xsy2748】 fly 矩阵快速幂的更多相关文章
- (中等) CF 576D Flights for Regular Customers (#319 Div1 D题),矩阵快速幂。
In the country there are exactly n cities numbered with positive integers from 1 to n. In each city ...
- 矩阵快速幂 HDU 4565 So Easy!(简单?才怪!)
题目链接 题意: 思路: 直接拿别人的图,自己写太麻烦了~ 然后就可以用矩阵快速幂套模板求递推式啦~ 另外: 这题想不到或者不会矩阵快速幂,根本没法做,还是2013年长沙邀请赛水题,也是2008年Go ...
- 51nod 算法马拉松18 B 非010串 矩阵快速幂
非010串 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 如果一个01字符串满足不存在010这样的子串,那么称它为非010串. 求长度为n的非010串的个数.(对1e9+7取模) ...
- 51nod 1113 矩阵快速幂
题目链接:51nod 1113 矩阵快速幂 模板题,学习下. #include<cstdio> #include<cmath> #include<cstring> ...
- 【66测试20161115】【树】【DP_LIS】【SPFA】【同余最短路】【递推】【矩阵快速幂】
还有3天,今天考试又崩了.状态还没有调整过来... 第一题:小L的二叉树 勤奋又善于思考的小L接触了信息学竞赛,开始的学习十分顺利.但是,小L对数据结构的掌握实在十分渣渣.所以,小L当时卡在了二叉树. ...
- HDU5950(矩阵快速幂)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5950 题意:f(n) = f(n-1) + 2*f(n-2) + n^4,f(1) = a , f(2 ...
- 51nod 1126 矩阵快速幂 水
有一个序列是这样定义的:f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. 给出A,B和N,求f(n)的值. Input 输 ...
- hdu2604(递推,矩阵快速幂)
题目链接:hdu2604 这题重要的递推公式,找到公式就很easy了(这道题和hdu1757(题解)类似,只是这道题需要自己推公式) 可以直接找规律,推出递推公式,也有另一种找递推公式的方法:(PS: ...
- 矩阵乘法&矩阵快速幂&矩阵快速幂解决线性递推式
矩阵乘法,顾名思义矩阵与矩阵相乘, 两矩阵可相乘的前提:第一个矩阵的行与第二个矩阵的列相等 相乘原则: a b * A B = a*A+b*C a*c+b*D c d ...
随机推荐
- 【DBCP】DBCP基本配置和重连配置+spring中配置
最近在看一些dbcp的相关内容,顺便做一下记录,免得自己给忘记了. 1. 引入dbcp (选择1.4) <dependency> <groupId>com.alibaba. ...
- Python自动化面试必备 之 你真明白装饰器么?
Python自动化面试必备 之 你真明白装饰器么? 装饰器是程序开发中经常会用到的一个功能,用好了装饰器,开发效率如虎添翼,所以这也是Python面试中必问的问题,但对于好多小白来讲,这个功能 有点绕 ...
- 2018.08.15 bzoj3747: [POI2015]Kinoman(线段树)
传送门 简单题. 先不管时间复杂度看看怎么做. 对于一段区间[l,r],如果从右端加入一个数a[r+1],对这个区间有什么影响?显然如果区间中已经有了a[r+1]这个数就会产生-a[i+1]的影响,否 ...
- hdu-1058(动态规划)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1058 题意:求只由2,3,5,7的乘积组成的数,输出格式见output 思路:开始想打表,后来打表超时 ...
- maven随笔
1.在我们项目顶层的POM文件中,我们会看到dependencyManagement元素.通过它元素来管理jar包的版本,让子项目中引用一个依赖而不用显示的列出版本号.Maven会沿着父子层次向上走, ...
- Django入门指南-第9章:静态文件设置(完结)
http://127.0.0.1:8000 #下一步是告诉Django在哪里可以找到静态文件.打开settings.py,拉到文件的底部,在STATIC_URL后面添加以下内容: STATICFILE ...
- Spring Boot的自动配置的原理浅析
一.原理描述 Spring Boot在进行SpringApplication对象实例化时会加载META-INF/spring.factories文件,将该配置文件中的配置载入到Spring容器. 二. ...
- Spring3.x错误----Bean named "txAdvice" must be of type[org.aopallibance.aop.Advice
Spring3.x错误: 解决方法: aopalliance-1.0.jar 和 aopalliance-alpha1.jar之间的冲突.
- (转)Entity Framework Extended Library (EF扩展类库,支持批量更新、删除、合并多个查询等)
转自:http://www.cnblogs.com/jinzhao/archive/2013/05/31/3108755.html 今天乍一看,园子里居然没有关于这个类库的文章,实在是意外毕竟已经有很 ...
- Watermelon -- codeforces
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=93241#problem/A (654123) http://codeforces.co ...