Aizu - 2200 Mr. Rito Post Office
题意:/*你是某个岛国(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的更多相关文章
- AOJ 2200 Mr. Rito Post Office
Mr. Rito Post Office Time Limit : 8 sec, Memory Limit : 65536 KB Problem D: Mr. Rito Post Office あなた ...
- AOJ 2200 Mr. Rito Post Office(Floyd+单调DP)
[题目链接] http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2200 [题目大意] 一张图中有陆路和水路,水路必须要有船才能走,当船 ...
- AOJ 2200 Mr. Rito Post Office (floyd+DP)
题意: 快递到了:你是某个岛国(ACM-ICPC Japan)上的一个苦逼程序员,你有一个当邮递员的好基友利腾桑遇到麻烦了:全岛有一些镇子通过水路和旱路相连,走水路必须要用船,在X处下船了船就停在X处 ...
- Mr. Rito Post Office [Aizu-2200] [图论] [DP]
题意:你是某个岛国(ACM-ICPC Japan )上的一个苦逼程序员,你有一个当邮递员的好基友利腾桑遇到麻烦了:全岛有一些镇子通过水路和旱路相连,走水路必须要用船,在X处下船了船就停在X处.而且岛上 ...
- Aizu:2200-Mr. Rito Post Office
快递 Time limit 8000 ms Memory limit 131072 kB Problem Description 你是某个岛国(ACM-ICPC Japan)上的一个苦逼程序员,你有一 ...
- Mr. Rito Post Office
あなたは離島の郵便局に勤めるプログラマである.あなたの住んでいる地域は,複数の島々からなる.各島には一つ以上の港町がある.それらに加えて他の町や村があるかもしない.ある島から別の島に向かうためには船を ...
- ProgrammingContestChallengeBook
POJ 1852 Ants POJ 2386 Lake Counting POJ 1979 Red and Black AOJ 0118 Property Distribution AOJ 0333 ...
- Aizu-2200-floyd+dp
Mr. Rito Post Office 你是一个为远程邮局邮局工作的程序员.你住的地区由几个岛屿组成.每个岛屿都有一个或多个港口城镇.除此之外,还有其他城镇和村庄.为了从一个岛到另一个岛,你必须使用 ...
- 大数据python词频统计之hdfs分发-cacheFile
-cacheFile 分发,文件事先上传至Hdfs上,分发的是一个文件 1.找一篇文章The_Man_of_Property.txt: He was proud of him! He could no ...
随机推荐
- python学习笔记:python异常的调用原理
因为错误是class,捕获一个错误就是捕获到该class的一个实例.因此,错误并不是凭空产生的,而是有意创建并抛出的.Python的内置函数会抛出很多类型的错误,我们自己编写的函数也可以抛出错误. h ...
- TODO java-awt中文乱码--疑惑
参考:http://blog.sina.com.cn/s/blog_025270e90101b1db.html 1.IDE工具是eclipse,检查了编码是UTF-8,控制台中是中文,用awt就会乱码 ...
- Haproxy 安装初体验
20180916 haproxy Haproxy简介 Haproxy是一款免费的.快速的和稳定的解决方案,提供HA和LB功能,同时对基于TCP的应用和HTTP的应用进行代理,对于流量很大的web站点来 ...
- NTT学习笔记
和\(FFT\)相对应的,把单位根换成了原根,把共轭复数换成了原根的逆元,最后输出的时候记得乘以原\(N\)的逆元即可. #include <bits/stdc++.h> using na ...
- linux c 编程 ------ 头文件及其作用
#include <stdio.h> printf #include <sys/types.h> 基本系统数据类型.系统的基本数据类型在32编译环境中保持为32位值,在64编译 ...
- 【强大美观易用的图像编辑器】Pixelmator Pro 1.2 for Mac
图标 Icon 软件介绍 Description Pixelmator Pro是一个功能强大.美观.易于使用的图像编辑器,专为Mac设计.Pixelmator Pro 借助各种专业级的无损图像编辑 ...
- [HNOI2003]消防局的设立 树形dp // 贪心
https://www.luogu.org/problemnew/show/P2279 一开始就想到了贪心的方法,不过一直觉得不能证明. 贪心的考虑是在深度从深到浅遍历每个结点的过程中,对于每个没有覆 ...
- JSON的简单使用_向前台发送JSON数据
转自:http://www.cnblogs.com/digdeep/p/5574366.html 1.前台页面 <%@ page language="java" conten ...
- golang redis连接池使用方法
package main import ( "fmt" "github.com/garyburd/redigo/redis" ) var pool *redis ...
- Subversion Edge部署
1.配置java的jdk vim /etc/profile 上面文件中加入export JAVA_HOME=/****/jdk*****,然后在path中加入$JAVA_HOME/bin: ,保存退 ...