题意:/*你是某个岛国(ACM-ICPC Japan)上的一个苦逼程序员,
你有一个当邮递员的好基友利腾桑遇到麻烦了:
全岛有一些镇子通过水路和旱路相连,走水路必须要用船,在X处下船了船就停在X处。
而且岛上只有一条船,下次想走水路还是得回到X处才行;
两个镇子之间可能有两条以上的水路或旱路;
邮递员必须按照清单上的镇子顺序送快递
(镇子可能重复,并且对于重复的镇子不允许一次性处理,比如ABCB的话B一定要按顺序走两次才行)。*/

思路:弗洛伊德求出弗洛伊德求出陆路,水路任意两点间的最短距离,然后动态规划求解。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<vector>
#include<set>
#include<queue>
#include<string>
#include<algorithm>
#define MAXSIZE 1005
#define LL long long
#define INF 0x3f3f3f
using namespace std; int lmap[MAXSIZE][MAXSIZE],smap[MAXSIZE][MAXSIZE],dp[MAXSIZE][MAXSIZE],q[MAXSIZE],n,m; int solve()
{
for(int k=;k<=n;k++) //弗洛伊德求出陆路,水路任意两点间的最短距离
{
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
lmap[i][j] = min(lmap[i][j],lmap[i][k]+lmap[k][j]);
smap[i][j] = min(smap[i][j],smap[i][k]+smap[k][j]);
}
}
}
dp[][q[]] = ; //初始在第一个城市
for(int i=;i<=m;i++) //现在派送的城市
{
for(int j=;j<=n;j++) //枚举船在那个城市
{
dp[i][j] = min(dp[i][j],dp[i-][j]+lmap[q[i-]][q[i]]);
for(int k=;k<=n;k++) //枚举把船停到那个城市
{
dp[i][k] = min(dp[i][k],dp[i-][j]+lmap[q[i-]][j]+smap[j][k]+lmap[k][q[i]]);
}
}
} int minn = INF;
for(int i=;i<=n;i++)
{
if(minn > dp[m][i])
minn = dp[m][i];
}
return minn;
} void Init()
{
for(int i=;i<MAXSIZE;i++)
{
for(int j=;j<MAXSIZE;j++)
{
if(i == j)
{
//dp[i][j] = 0;
lmap[i][j] = ;
smap[i][j] = ;
}
else
{ lmap[i][j] = INF;
smap[i][j] = INF;
}
dp[i][j] = INF;
}
}
} int main()
{
char op[];
int u,v,w;
while(scanf("%d%d",&n,&m),n+m)
{
Init();
for(int i=;i<=m;i++)
{
scanf("%d%d%d%s",&u,&v,&w,op);
if(op[] == 'L')
{
lmap[u][v] = lmap[v][u] = min(lmap[u][v],w);
} else
{
smap[u][v] = smap[v][u] = min(smap[u][v],w);
}
} scanf("%d",&m);
for(int i=;i<=m;i++)
scanf("%d",&q[i]); int ans = solve(); printf("%d\n",ans);
}
return ;
}

Aizu - 2200 Mr. Rito Post Office的更多相关文章

  1. AOJ 2200 Mr. Rito Post Office

    Mr. Rito Post Office Time Limit : 8 sec, Memory Limit : 65536 KB Problem D: Mr. Rito Post Office あなた ...

  2. AOJ 2200 Mr. Rito Post Office(Floyd+单调DP)

    [题目链接] http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2200 [题目大意] 一张图中有陆路和水路,水路必须要有船才能走,当船 ...

  3. AOJ 2200 Mr. Rito Post Office (floyd+DP)

    题意: 快递到了:你是某个岛国(ACM-ICPC Japan)上的一个苦逼程序员,你有一个当邮递员的好基友利腾桑遇到麻烦了:全岛有一些镇子通过水路和旱路相连,走水路必须要用船,在X处下船了船就停在X处 ...

  4. Mr. Rito Post Office [Aizu-2200] [图论] [DP]

    题意:你是某个岛国(ACM-ICPC Japan )上的一个苦逼程序员,你有一个当邮递员的好基友利腾桑遇到麻烦了:全岛有一些镇子通过水路和旱路相连,走水路必须要用船,在X处下船了船就停在X处.而且岛上 ...

  5. Aizu:2200-Mr. Rito Post Office

    快递 Time limit 8000 ms Memory limit 131072 kB Problem Description 你是某个岛国(ACM-ICPC Japan)上的一个苦逼程序员,你有一 ...

  6. Mr. Rito Post Office

    あなたは離島の郵便局に勤めるプログラマである.あなたの住んでいる地域は,複数の島々からなる.各島には一つ以上の港町がある.それらに加えて他の町や村があるかもしない.ある島から別の島に向かうためには船を ...

  7. ProgrammingContestChallengeBook

    POJ 1852 Ants POJ 2386 Lake Counting POJ 1979 Red and Black AOJ 0118 Property Distribution AOJ 0333 ...

  8. Aizu-2200-floyd+dp

    Mr. Rito Post Office 你是一个为远程邮局邮局工作的程序员.你住的地区由几个岛屿组成.每个岛屿都有一个或多个港口城镇.除此之外,还有其他城镇和村庄.为了从一个岛到另一个岛,你必须使用 ...

  9. 大数据python词频统计之hdfs分发-cacheFile

    -cacheFile 分发,文件事先上传至Hdfs上,分发的是一个文件 1.找一篇文章The_Man_of_Property.txt: He was proud of him! He could no ...

随机推荐

  1. bigdata learning unit one--Hadoop environment setting

    1.配置ssh,使集群服务器之间的通讯,不再每次都输入密码进行认证. 2. [root@hc--uatbeta2 hadoop]# start-all.shStarting namenodes on ...

  2. node(基础三)_模块系统基础

      一.前言                                                                                         这篇文章主 ...

  3. JS数据交换的三种方式

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. linux driver ------ 字符设备驱动 之 “ 创建设备节点流程 ”

    在字符设备驱动开发的入门教程中,最常见的就是用device_create()函数来创建设备节点了,但是在之后阅读内核源码的过程中却很少见device_create()的踪影了,取而代之的是device ...

  5. Error[Pe020]: identifier "FILE" is undefined

    Error[Pe020]: identifier "FILE" is undefined 需要添加头文件:#include <stdio.h>

  6. sed 的|

    #!/bin/bash/etc/init.d/nginx start && \sed -i "s|/project/env/|/${PROJ}/${ENVT}/|g" ...

  7. Shell 同步时间脚本

    Linux系统同步时间脚本 Linux操作系统,如果时间和网络时间差距太大的话.可能会导致程序,进程启动不了.所以linux系统时间同步显得尤为重要,本文在借鉴网上众多资料后,以centos_6.X系 ...

  8. jmeter中判断数据库是否存在相应的记录

    jmeter判断数据库中是否存在相应记录可以使用count 配合case,然后再加个断言,后面用 变量JMeterThread.last_sample_ok来判断是否存在相应记录 select cas ...

  9. 因子分析factor analysis_spss运用_python建模(推荐AAA)

    sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...

  10. Helm简介及安装

    前提条件 一个kubernetes集群 安装和配置集群端服务Helm和Tiller 确定要应用于安装的安全配置(如果有) 1.安装HELM 每一个版本HELM提供多种操作系统的二进制版本.可以手动下载 ...