[luoguP2886] [USACO07NOV]牛继电器Cow Relays(矩阵)
矩阵快速幂,本质是floyd
把 * 改成 + 即可
注意初始化
因为只有100条边,所以可以离散化
- #include <cstdio>
- #include <cstring>
- #include <algorithm>
- #define N 101
- #define min(x, y) ((x) < (y) ? (x) : (y))
- int n, t, s, e, cnt;
- int x[N], y[N], z[N], a[N];
- struct Matrix
- {
- int n, m;
- int a[N][N];
- Matrix()
- {
- n = m = 0;
- memset(a, 63, sizeof(a));
- }
- };
- inline Matrix operator * (Matrix x, Matrix y)
- {
- int i, j, k;
- Matrix ans;
- ans.n = x.n;
- ans.m = y.m;
- for(i = 1; i <= x.n; i++)
- for(j = 1; j <= y.m; j++)
- for(k = 1; k <= y.n; k++)
- ans.a[i][j] = min(ans.a[i][j], x.a[i][k] + y.a[k][j]);
- return ans;
- }
- inline Matrix operator ^ (Matrix x, int y)
- {
- int i;
- Matrix ans;
- ans.n = ans.m = cnt;
- for(i = 1; i <= cnt; i++) ans.a[i][i] = 0;
- for(; y; y >>= 1)
- {
- if(y & 1) ans = ans * x;
- x = x * x;
- }
- return ans;
- }
- int main()
- {
- int i;
- Matrix sum;
- scanf("%d %d %d %d", &n, &t, &s, &e);
- a[++cnt] = s;
- a[++cnt] = e;
- for(i = 1; i <= t; i++)
- {
- scanf("%d %d %d", &z[i], &x[i], &y[i]);
- a[++cnt] = x[i];
- a[++cnt] = y[i];
- }
- std::sort(a + 1, a + cnt + 1);
- cnt = std::unique(a + 1, a + cnt + 1) - (a + 1);
- sum.n = sum.m = cnt;
- for(i = 1; i <= t; i++)
- {
- x[i] = std::lower_bound(a + 1, a + cnt + 1, x[i]) - a;
- y[i] = std::lower_bound(a + 1, a + cnt + 1, y[i]) - a;
- sum.a[x[i]][y[i]] = z[i];
- sum.a[y[i]][x[i]] = z[i];
- }
- sum = sum ^ n;
- s = std::lower_bound(a + 1, a + cnt + 1, s) - a;
- e = std::lower_bound(a + 1, a + cnt + 1, e) - a;
- printf("%d\n", sum.a[s][e]);
- return 0;
- }
[luoguP2886] [USACO07NOV]牛继电器Cow Relays(矩阵)的更多相关文章
- P2886 [USACO07NOV]牛继电器Cow Relays
题目描述 For their physical fitness program, N (2 ≤ N ≤ 1,000,000) cows have decided to run a relay race ...
- [USACO07NOV]牛继电器Cow Relays
题目描述 给出一张无向连通图,求S到E经过k条边的最短路. 输入输出样例 输入样例#1: 2 6 6 4 11 4 6 4 4 8 8 4 9 6 6 8 2 6 9 3 8 9 输出样例#1: 10 ...
- 洛谷P2886 [USACO07NOV]牛继电器Cow Relays
题意很简单,给一张图,把基本的求起点到终点最短路改成求经过k条边的最短路. 求最短路常用的算法是dijkstra,SPFA,还有floyd. 考虑floyd的过程: c[i][j]=min(c[i][ ...
- [LUOGU] P2886 [USACO07NOV]牛继电器Cow Relays
https://www.luogu.org/problemnew/show/P2886 给定无向连通图,求经过k条边,s到t的最短路 Floyd形式的矩阵乘法,同样满足结合律,所以可以进行快速幂. 离 ...
- 洛谷 P2886 [USACO07NOV]牛继电器Cow Relays
题面 解题思路 ## floyd+矩阵快速幂,跟GhostCai爷打赌用不用离散化,最后完败..GhostCai真是tql ! 有个巧妙的方法就是将节点重新编号,因为与节点无关. 代码 #includ ...
- Luogu 2886 [USACO07NOV]牛继电器Cow Relays
BZOJ 1706权限题. 倍增$floyd$. 首先这道题有用的点最多只有$200$个,先离散化. 设$f_{p, i, j}$表示经过$2^p$条边从$i$到$j$的最短路,那么有转移$f_{p, ...
- [USACO07NOV]牛继电器Cow Relays (最短路,DP)
题目链接 Solution 非正解 似乎比较蛇啊,先个一个部分分做法,最短路+\(DP\). 在求最短路的堆或者队列中存储元素 \(dis_{i,j}\) 代表 \(i\) 这个节点,走了 \(j\) ...
- luogu题解 P2886 【牛继电器Cow Relays】-经过K边最短路&矩阵
题目链接: https://www.luogu.org/problemnew/show/P2886 Update 6.16 最近看了下<算法导论>,惊奇地发现在在介绍\(APSP\) \( ...
- [洛谷P2886] 牛继电器Cow Relays
问题描述 For their physical fitness program, N (2 ≤ N ≤ 1,000,000) cows have decided to run a relay race ...
随机推荐
- D. Tavas and Malekas DFS模拟 + kmp + hash || kmp + hash
http://codeforces.com/contest/535/problem/D 如果真的要把m个串覆盖上一个串上面,是可以得,不会超时. 要注意到一点,全部覆盖后再判断时候合法,和边放边判断, ...
- Ionic之增加样式会自动换行解决方案
设置样式的时候,引用自身的样式,能正常显示,但是引用自定义样式显示的时候,竟然或自动换行,好尴尬. 原本代码: $('.codeSuccess').css({'display':'block'}); ...
- RabbitMQ十:重要方法简述(参数)
主要方法 前言 经过前面的学习,RabbitMQ 已经拙见有一定认识和了解,今天主要针对我们在前面学习方法进行一次小总结,本篇文章也想在开头写的,但是后来考虑,如果我都把方法都一一列举,我想大家都没很 ...
- oracle常用数据类型&约束条件(及案例)
一.数据类型 数据类型 说明 数字 number [小数,整数] number(5,3)表示总共5个数字,小数点后3个,最大值99.999 number(5) 表示整数 最大值99999 字符 ...
- viewport实现html页面动态缩放/meta viewport/viewport
页面默认缩放比例为1,最小宽度为375px,在小于375px出现水平滚动条的时候重新计算显示比例缩小界面, <!DOCTYPE html> <html lang="en&q ...
- Android性能分析工具Profile GPU rendering详细介绍
如何在一个应用中追踪和定位性能问题,甚至在没有它的源代码的情况下?? “Profile GPU rendering”(GPU渲染分析),一款Android4.1所引入的工具.你可以在“设置”应用的“开 ...
- RxJava尝试取代Handler初探
在之前的一篇文章中,我们探究了RxJava的使用方法,详细请看https://www.cnblogs.com/yanyojun/p/9745675.html 根据扔物线大神的描述,如果用一个词来概括R ...
- Azure PowerShell 在ARM环境下使用指定 vhd(本地化后的磁盘) 来创建虚拟机
#此脚本用于 Azure 存储账户中已有 vhd 镜像文件创建虚拟机,一般用于做好镜像测试 #----------------------------------------------------- ...
- codevs 1316 文化之旅 2012年NOIP全国联赛普及组
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一种文 ...
- 使用Recast.AI创建具有人工智能的聊天机器人
很多SAP顾问朋友们对于人工智能/机器学习这个话题非常感兴趣,也在不断思考如何将这种新技术和SAP传统产品相结合.Jerry之前的微信公众号文章C4C和微信集成系列教程曾经介绍了Partner如何利用 ...