Floyd+限制路径步数(快速幂优化)
最短路可以采用Floyd来计算,但是限制时间在1s内,估计直接写会超时,所以要用到快速幂来优化。 
快速幂的思想是:xy=xy/2∗2" role="presentation" style="position: relative;">xy=xy/2∗2xy=xy/2∗2             所以每次划分下去寻找最短路 
(其实我也没完全想清楚,就不讲太清楚了,怕讲错)
//STATUS:C++_AC_125MS_1204KB
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
#include<queue>
#include<stack>
using namespace std;
#define LL __int64
#define pii pair<int,int>
#define Max(a,b) ((a)>(b)?(a):(b))
#define Min(a,b) ((a)<(b)?(a):(b))
#define mem(a,b) memset(a,b,sizeof(a))
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
const int N=210,M=1000000,INF=0x3f3f3f3f,MOD=1999997;
const LL LLNF=0x3f3f3f3f3f3f3f3fLL;
const double DNF=100000000;
int f[N*10],w[N][N];
int nt,n,m,s,t;
struct Matrix{
    int ma[N][N];
    Matrix friend operator * (const Matrix a,const Matrix b){
        Matrix ret;
        mem(ret.ma,0x3f);
        int i,j,k;
        for(k=0;k<n;k++)
            for(i=0;i<n;i++)
                for(j=0;j<n;j++)
                    if(a.ma[i][k]+b.ma[k][j]<ret.ma[i][j])
                        ret.ma[i][j]=a.ma[i][k]+b.ma[k][j];
        return ret;
    }
}mta,mtb;
int pow(int k)
{
    mem(mtb.ma,0x3f);
    for(int i=0;i<n;i++)mtb.ma[i][i]=0;
    while(k){
        if(k&1)mtb=mtb*mta;
        mta=mta*mta;
        k>>=1;
    }
    return mtb.ma[f[s]][f[t]];
}
int main()
{
 //   freopen("in.txt","r",stdin);
    int i,a,b,c;
    while(~scanf("%d%d%d%d",&nt,&m,&s,&t))
    {
        n=0;
        mem(f,-1);
        mem(mta.ma,0x3f);
        for(i=0;i<m;i++){
            scanf("%d%d%d",&c,&a,&b);
            if(f[a]==-1)f[a]=n++;
            if(f[b]==-1)f[b]=n++;
            mta.ma[f[a]][f[b]]=mta.ma[f[b]][f[a]]=Min(mta.ma[f[a]][f[b]],c);
        }
        printf("%d\n",pow(nt));
    }
    return 0;
}
Floyd+限制路径步数(快速幂优化)的更多相关文章
- POJ 3744 【矩阵快速幂优化   概率DP】
		搞懂了什么是矩阵快速幂优化.... 这道题的重点不是DP. /* 题意: 小明要走某条路,按照个人兴致,向前走一步的概率是p,向前跳两步的概率是1-p,但是地上有地雷,给了地雷的x坐标,(一维),求小 ... 
- 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 ... 
- 2018.10.22 bzoj1009: [HNOI2008]GT考试(kmp+矩阵快速幂优化dp)
		传送门 f[i][j]f[i][j]f[i][j]表示从状态"匹配了前i位"转移到"匹配了前j位"的方案数. 这个东西单次是可以通过跳kmp的fail数组得到的 ... 
- 2018.10.19 NOIP训练 桌子(快速幂优化dp)
		传送门 勉强算一道dp好题. 显然第kkk列和第k+nk+nk+n列放的棋子数是相同的. 因此只需要统计出前nnn列的选法数. 对于前mmm%nnn列,一共有(m−1)/n+1(m-1)/n+1(m− ... 
- 2018.10.19 NOIP模拟 硬币(矩阵快速幂优化dp)
		传送门 不得不说神仙出题人DZYODZYODZYO出的题是真的妙. f[i][j][k]f[i][j][k]f[i][j][k]表示选的硬币最大面值为iii最小面值不小于jjj,总面值为kkk时的选法 ... 
- 2018.10.16 uoj#340. 【清华集训2017】小 Y 和恐怖的奴隶主(矩阵快速幂优化dp)
		传送门 一道不错的矩阵快速幂优化dpdpdp. 设f[i][j][k][l]f[i][j][k][l]f[i][j][k][l]表示前iii轮第iii轮还有jjj个一滴血的,kkk个两滴血的,lll个 ... 
- BZOJ4547 Hdu5171 小奇的集合 【矩阵快速幂优化递推】
		BZOJ4547 Hdu5171 小奇的集合 Description 有一个大小为n的可重集S,小奇每次操作可以加入一个数a+b(a,b均属于S),求k次操作后它可获得的S的和的最大值.(数据保证这个 ... 
- BZOJ5298 CQOI2018 交错序列 【DP+矩阵快速幂优化】*
		BZOJ5298 CQOI2018 交错序列 [DP+矩阵快速幂优化] Description 我们称一个仅由0.1构成的序列为"交错序列",当且仅当序列中没有相邻的1(可以有相邻 ... 
- 【bzoj1009】[HNOI2008]GT考试(矩阵快速幂优化dp+kmp)
		题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=1009 这道题一看数据范围:$ n<=10^9 $,显然不是数学题就是矩乘快速幂优 ... 
- Cayley-Hamilton定理与矩阵快速幂优化、常系数线性递推优化
		原文链接www.cnblogs.com/zhouzhendong/p/Cayley-Hamilton.html Cayley-Hamilton定理与矩阵快速幂优化.常系数线性递推优化 引入 在开始本文 ... 
随机推荐
- python执行
			转载:https://www.cnblogs.com/zflibra/p/4180796.html 
- ubuntu安装ftp环境
			ubuntu安装ftp环境 安装: apt install vsftpd 启动: service vsftpd start 查看状态: service vsftpd status root登录: vi ... 
- [RxJS] `add` Inner Subscriptions to Outer Subscribers to `unsubscribe` in RxJS
			When subscribers create new "inner" sources and subscriptions, you run the risk of losing ... 
- Android四大组件与进程启动的关系(转)
			一. 概述 Android系统将进程做得很友好的封装,对于上层app开发者来说进程几乎是透明的. 了解Android的朋友,一定知道Android四大组件,但对于进程可能会相对较陌生. 一个进程里面可 ... 
- HTTP错误 404.17 - Not Found" IIS 7.5
			出现这种情况的原因通常是因为先安装了Framework,后安装的IIS: 运行cmd,输入: C:\Windows\Microsoft.NET\Framework\V4.0.30319\aspnet_ ... 
- 云上领跑,快人一步:华为云抢先发布Redis5.0
			12月17日,华为云在DCS2.0的基础上,快人一步,抢先推出了新的Redis 5.0产品,这是一个崭新的突破.目前国内在缓存领域的发展普遍停留在Redis4.0阶段,华为云率先发布了Redis5.0 ... 
- Android网络编程(三)Volley使用方法全解析
			相关文章 Android网络编程(一)HTTP协议原理 Android网络编程(二)HttpClient与HttpURLConnection 前言 Volley想必许多人都用过,为了建立网络编程的知识 ... 
- DBscan算法及其Python实现
			DBSCAN简介: 1.简介 DBSCAN 算法是一种基于密度的空间聚类算法.该算法利用基于密度的聚类的概念,即要求聚类空间中的一定区域内所包含对象(点或其它空间对象)的数目不小于某一给定阀值.DBS ... 
- Orange's_1_win7下搭建环境
			工欲善其事,必先利其器. 由于公司电脑工作环境是win7,为了学习于渊的Orange,所以就在windows下配置环境: 1.nasm: nasm汇编 http://www.nasm.us/ ... 
- 【iOS系列】-iOS开发常用库文件总结
			这里是列举出得一部分,更多内容可参考https://github.com/darren90/Gather_iOS 码农周刊的总结 - 覆盖很广 调调的 - 很多开发相关内容都有体现 右滑返回的解决 - ... 
