计蒜客 百度地图的实时路况 (floyd+二分)

原创 2016年08月29日 20:18:53

计蒜客 百度地图的实时路况

题目

中文题意

思路

如果枚举不走的点,那么会是n^4,会超时,在知道floyd的前提下,我们可以二分那个不走的点。就例如有1234四个点,我们先二分后一半得出经过34松弛的矩阵,然后再得出经过234优化的矩阵,这样不走1的结果就出来了,再回溯递归另一半134的矩阵,不走2的答案就出来了,再回溯得出12的矩阵,再递归124得出3,再回溯12,递归123,4的答案就出来了,实在不行可以看代码理解。(还能这么二分。。666)

代码

#include<cstdio>
#include<cstring>
#include<cassert>
#include<iostream>
#include<algorithm>

using namespace std;

typedef long long ll;

const int maxn=310;

int ma[10][maxn][maxn];
ll ans;
int n;

void solve(int L,int R,int dep)
{
    if(L==R)
    {
        for(int i=1; i<=n; i++)
        {
            if(i==L) continue;
            for(int j=1; j<=n; j++)
            {
                if(j==L) continue;
                ans+=ma[dep][i][j];
            }
        }
        return;
    }
    for(int i=1; i<=n; i++)
        for(int j=1; j<=n; j++)
            ma[dep+1][i][j]=ma[dep][i][j];
    int m=L+R>>1;
    for(int k=m+1; k<=R; k++)
        for(int i=1; i<=n; i++)
            for(int j=1; j<=n; j++)
            {
                if(i==j) continue;
                if(ma[dep+1][i][k]==-1||ma[dep+1][k][j]==-1) continue;
                if(ma[dep+1][i][j]==-1)
                    ma[dep+1][i][j]=ma[dep+1][i][k]+ma[dep+1][k][j];
                else
                    ma[dep+1][i][j]=min(ma[dep+1][i][j],ma[dep+1][i][k]+ma[dep+1][k][j]);
            }
    solve(L,m,dep+1);
    for(int i=1; i<=n; i++)
        for(int j=1; j<=n; j++)
            ma[dep+1][i][j]=ma[dep][i][j];
    for(int k=L; k<=m; k++)
        for(int i=1; i<=n; i++)
            for(int j=1; j<=n; j++)
            {
                if(i==j) continue;
                if(ma[dep+1][i][k]==-1||ma[dep+1][k][j]==-1) continue;
                if(ma[dep+1][i][j]==-1)
                    ma[dep+1][i][j]=ma[dep+1][i][k]+ma[dep+1][k][j];
                else
                    ma[dep+1][i][j]=min(ma[dep+1][i][j],ma[dep+1][i][k]+ma[dep+1][k][j]);
            }
    solve(m+1,R,dep+1);
}

int main()
{
    scanf("%d",&n);
    for(int i=1; i<=n; i++)
        for(int j=1; j<=n; j++)
            scanf("%d",&ma[0][i][j]);
    ans=0;
    solve(1,n,0);
    printf("%lld\n",ans);
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

百度地图-实时路况调用实现

效果图 js代码 $(function(){ // 百度地图API功能 var map = new BMap.Map("allmap"); var point = ...
  • sun2015_07_24
  • sun2015_07_24
  • 2016年01月25日 14:14
  • 9014

计蒜客 百度地图的实时路况 【cdq+floyd】

链接:https://nanti.jisuanke.com/t/11217 分析:题目要求所有的dis(x,y,z); x到z不经过y的最短路。考虑暴力做法,枚举每一个点表示不经过它,跑n次floy...
  • u012483216
  • u012483216
  • 2016年07月14日 16:26
  • 272

实时路况交通预测

项目目标 实时路况展现、未来路况预测数据源 城市中每时每刻生成的海量数据项目架构图实时交通拥堵效果图其他功能程序架构图卡口数据字段说明...
  • wuxintdrh
  • wuxintdrh
  • 2017年06月11日 16:26
  • 213

Android高德地图开发(3)——路况+定位

在上篇的基础上,我们继续添加路况和定位功能:1.路况图层显示高德地图封装了交通路况信息,通过调用AMap 类的方法setTrafficEnabled(),显示路况信息。...
  • iigeoxiaoyang
  • iigeoxiaoyang
  • 2016年01月19日 10:26
  • 1493

【Floyd+分治】计蒜客 百度地图的实时路况

题面在这里此题思路很巧妙……好题,好题啊首先要讲一下Floyd的本质其实就是一个DP 其中中介点k是DP的阶段,表示已经取了[1.k][1.k]的点作为中介点 当然,也可以改变枚举k的顺序,以获得...
  • linkfqy
  • linkfqy
  • 2017年07月30日 22:09
  • 544

实时路况分析:不同路段车速预测、推荐(距离、时间、路况)最优路径

转的,如果有问题,及时联系我删除。 大雨临城,大数据给你最温暖的怀抱 原创 2016-07-23 孙弋涵  烦躁的雨天 北京持续多日的强降水终于结束,打开uber看到界面上的...
  • mmc2015
  • mmc2015
  • 2016年07月25日 19:39
  • 3276

计蒜客 百度地图的实时路况

编号从 1到 n 的n个点。定义 d(u,v,w)为从 u 号点出发,严格不经过 v 号点,最终到达 w 号点的最短路径长度,如果不存在这样的路径,d(u,v,w) 的值为 −1。令P=∑1≤x,y,...
  • ShinFeb
  • ShinFeb
  • 2016年07月03日 17:52
  • 380

实时道路路况计算的认识

百度地图、高德地图、腾讯地图都有发布实时路况,帮助公众出行选择行驶路线,道路路况的计算需要大量的交通流信息,实时路况的信息主要从两方面来获取:传统的路况信息检测方法,就是在城市的主干道上安装地感线圈、...
  • hongdefa1984
  • hongdefa1984
  • 2018年01月17日 20:51
  • 4

POJ 2391 Floyd+二分+拆点最大流

题意: 思路:先Floyd一遍两两点之间的最短路 二分答案 建图 跑Dinic只要不像我一样作死#define int long long 估计都没啥事……我T到死辣...
  • qq_31785871
  • qq_31785871
  • 2016年10月28日 23:51
  • 459

基于路况变化的交通疏导指示系统之总结

这个项目主要针对传统红绿灯固定时间周期变化的不足,设计出基于路况变化的动态调节系统,以89S52单片机为核心,通过无线模块nRF24L01构成无线节点,各节点进行数据交换,运算出最优控制方案后进行同步...
  • wu159632
  • wu159632
  • 2013年03月06日 18:56
  • 680
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:计蒜客 百度地图的实时路况 (floyd+二分)
举报原因:
原因补充:

(最多只允许输入30个字)