2016 计蒜之道 复赛 百度地图的实时路况 [Floyd][分治]
来源:互联网 发布:甘肃网络机柜 编辑:程序博客网 时间:2024/05/17 08:28
Description
定义
Solution
考虑分治即可,
#include <cstdio>#include <cstring>#include <iostream>using namespace std;const int N = 310;const int INF = 0x3f3f3f3f;typedef long long ll;inline char get(void) { static char buf[100000], *S = buf, *T = buf; if (S == T) { T = (S = buf) + fread(buf, 1, 100000, stdin); if (S == T) return EOF; } return *S++;}inline void read(int &x) { static char c; x = 0; int sgn = 0; for (c = get(); c < '0' || c > '9'; c = get()) if (c == '-') sgn = 1; for (; c >= '0' && c <= '9'; c = get()) x = x * 10 + c - '0'; if (sgn) x = -x;}int mp[N][N];int n;ll ans;struct Floyd { int mp[N][N]; Floyd(void) { memset(mp, 0x3f, sizeof mp); } inline int* operator [](const int x) { return mp[x]; }};Floyd S;inline int Min(int a, int b) { return a < b ? a : b;}void DivAndConq(int l, int r, Floyd &F) { if (l == r) { for (int i = 1; i <= n; i++) if (i != l) for (int j = 1; j <= n; j++) if (j != l) ans += F[i][j] == INF ? -1 : F[i][j]; return; } Floyd P = F; int mid = (l + r) >> 1; for (int k = l; k <= mid; k++) for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) P[i][j] = Min(P[i][j], P[i][k] + P[k][j]); DivAndConq(mid + 1, r, P); P = F; for (int k = mid + 1; k <= r; k++) for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) P[i][j] = Min(P[i][j], P[i][k] + P[k][j]); DivAndConq(l, mid, P);}int main(void) { freopen("1.in", "r", stdin); freopen("1.out", "w", stdout); read(n); for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) { read(S[i][j]); if (S[i][j] == -1) S[i][j] = INF; } DivAndConq(1, n, S); cout << ans << endl; return 0;}
0 0
- 2016计蒜之道 复赛 A. 百度地图的实时路况(cdq分治+floyd)
- 2016 计蒜之道 复赛 百度地图的实时路况 [Floyd][分治]
- 计蒜之道 2016复赛A 百度地图的实时路况 [floyd+分治]【图论】
- 【分治+Floyd】2016计蒜之道复赛A[百度地图的实时路况]题解
- [分治 Floyd] 计蒜之道2016复赛 .百度地图的实时路况
- 计蒜之道复赛A题 百度地图的实时路况(分治+floyd)
- [分治 floyed] 2016 计蒜之道 复赛 百度地图的实时路况
- [分治+floyed] 2016 计蒜之道 复赛 A 百度地图的实时路况
- 算法:分治+floyd_计蒜之道复赛A题 百度地图的实时路况
- 【Floyd+分治】计蒜客 百度地图的实时路况
- 计蒜客 百度地图的实时路况 【cdq+floyd】
- 计蒜客 百度地图的实时路况 (floyd+二分)
- 计蒜客 百度地图的实时路况
- 计蒜客 百度地图的实时路况
- 计蒜客 百度地图的实时路况
- 2017 计蒜之道 复赛 百度地图导航【思维+最短路】
- 2017计蒜之道复赛 百度地图导航 (最短路)
- [最短路] 2017 计蒜之道 复赛 D. 百度地图导航
- NUC1015 计算数字的根
- python_使用matplotlib画柱状图(bar),散点图(scatter)
- 利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示, 60-89分之间的用B表示,60分以下的用C表示
- hdu1281.cpp(匈牙利算法)
- 自定义圆行点击(颜色也变)
- 2016 计蒜之道 复赛 百度地图的实时路况 [Floyd][分治]
- Spark之WordCount
- 读程序 最大公约数
- 【Java学习笔记】17:Single Threaded Execution Pattern
- spark的排错和调优
- 欧拉定理
- cssselectVSxpath
- Leetcode 7 Reverse Integer
- 1040. 有几个PAT