【BZOJ1706】[usaco2007 Nov]relays 奶牛接力跑【DP】【矩阵乘法】【限制最短路】
来源:互联网 发布:韩国人真恶心 知乎 编辑:程序博客网 时间:2024/04/30 21:12
http://www.lydsy.com/JudgeOnline/problem.php?id=1706
论文题,详见《矩阵乘法在信息学中的应用》俞华程。
论文说点不会超过100,于是就开了100,果断RE,然后意识到编号最大会到1000,于是只能加个标号了。
inf开小了,wa了几发...
注意因为改了矩阵乘法定义,所以单位矩阵也不是平常的单位矩阵了(我觉得应该是全为inf),强行搞单位矩阵有点麻烦,所以手动先乘一次,指数减一,这样方便。
这是数据:http://contest.usaco.org/TESTDATA/NOV07_5.htm
/* Footprints In The Blood Soaked Snow */#include <cstdio>#include <algorithm>using namespace std;const int maxn = 105, inf = 0x3f3f3f3f, maxm = 1005;int id[maxm], N;struct _matrix {int num[maxn][maxn];} trans;inline int iread() {int f = 1, x = 0; char ch = getchar();for(; ch < '0' || ch > '9'; ch = getchar()) f = ch == '-' ? -1 : 1;for(; ch >= '0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - '0';return f * x;}inline int getid(int x) {if(!id[x]) id[x] = ++N;return id[x];}inline _matrix mul(_matrix &A, _matrix &B) {_matrix C;for(int i = 1; i <= N; i++) for(int j = 1; j <= N; j++) {C.num[i][j] = inf;for(int k = 1; k <= N; k++) C.num[i][j] = min(C.num[i][j], A.num[i][k] + B.num[k][j]);}return C;}inline _matrix qpow(_matrix &A, int n) {_matrix ans = A; n--;for(_matrix t = A; n; n >>= 1, t = mul(t, t)) if(n & 1) ans = mul(ans, t);return ans;}int main() {for(int i = 0; i < maxn; i++) for(int j = 0; j < maxn; j++) trans.num[i][j] = inf;int n = iread(), m = iread(), st = iread(), ed = iread();for(int i = 1; i <= m; i++) {int w = iread(), a = iread(), b = iread(); a = getid(a); b = getid(b);trans.num[a][b] = min(trans.num[a][b], w);trans.num[b][a] = min(trans.num[b][a], w);}_matrix ans = qpow(trans, n);printf("%d\n", ans.num[getid(st)][getid(ed)]);return 0;}
0 0
- 【BZOJ1706】[usaco2007 Nov]relays 奶牛接力跑【DP】【矩阵乘法】【限制最短路】
- bzoj1706 [usaco2007 Nov]relays 奶牛接力跑 矩阵乘法(倍增floyd)
- 矩阵乘法专题2——bzoj 1706 [usaco2007 Nov] relays 奶牛接力跑 题解
- bzoj 1706: [usaco2007 Nov]relays 奶牛接力跑 (矩阵乘法)
- BZOJ 1706: [usaco2007 Nov]relays 奶牛接力跑 floyd矩阵乘法
- 1706: [usaco2007 Nov]relays 奶牛接力跑
- bzoj 1706: [usaco2007 Nov]relays 奶牛接力跑
- BZOJ 1706 usaco2007 Nov relays 奶牛接力跑 倍增Floyd
- 1706: [usaco2007 Nov]relays 奶牛接力跑 倍增floyd
- [倍增Floyd] BZOJ 1706 [usaco2007 Nov]relays 奶牛接力跑
- POJ 3613/bzoj 1706: [usaco2007 Nov]Cow Relays 奶牛接力跑
- bzoj 1706: [usaco2007 Nov]relays 奶牛接力跑(倍增floyd)
- SSL2510&BZOJ1706 奶牛接力 矩阵
- 奶牛接力 矩阵乘法
- [JZOJ2289] [BZOJ1706]【USACO 2007 NOV GOLD】奶牛接力
- BZOJ 1706 usaco 2007 Nov relays 奶牛接力跑/POJ 3613 Cow Relays 倍增Floyd
- 【bzoj1641】 Usaco2007 Nov Cow Hurdles 奶牛跨栏 最短路
- bzoj 1706 奶牛接力 矩阵乘法
- MyEclipse2014 怎么将项目部署在tomcat的ROOT目录下
- PCANet
- pgAdmin 连接服务器Access to database denied
- Qt编译错误 底层由于接收到操作系统的信号而停止
- matlab封装DLL动态链接库 再用VS2010调用(matlab VS混合编程)
- 【BZOJ1706】[usaco2007 Nov]relays 奶牛接力跑【DP】【矩阵乘法】【限制最短路】
- 用户层通过Kernel原生ARP Netlink multicast message 学习ARP
- I2C分析及RX8025驱动编写
- Android APP设计加载使用gif动图需要注意的一般性问题
- SSH整合 ----- 充分利用jar包资源 ---- 之struts篇
- mac安装Hadoop和hive
- html5的canvas的学习笔记
- PHP过滤手机APP的表情
- 模板引擎Template