Aizu - 2200 Mr. Rito Post Office
2024-08-27 02:21:18
题意:/*你是某个岛国(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 ;
}
最新文章
- CocoaPods安装及使用《转》
- MySQL字符集的修改和查看
- 好久没弄了,来个最简的centos下的Iptables文件存照吧。
- ECSHOP首页调用指定分类下的商品
- 字符串copy
- Python之路Day13
- WinForm----DataGridview---连接数据库,以及双击一条数据,显示信息到Label控件,也可以是TextBox控件。
- docker学习(一)
- Linux云计算运维-MySQL
- Autofac使用
- Servlet+jSP+java实现商品信息和流水的操作
- windows server 2012R2 故障转移集群配置
- P1262 间谍网络
- 微信小程序获取当前地址以及选择地址详解 地点标记
- Linux 动态链接库(.so)的使用
- openstack 部署笔记--dashboard
- 基于OpenGL编写一个简易的2D渲染框架-11 重构渲染器-Renderer
- Android开源库集合(控件)
- puppeteer截图
- python日期格式转换小记
热门文章
- 快速入门Splay
- 二进制部署 Kubernetes 集群
- yum工具的使用
- 解决phpmyadmin 遇见的问题
- 【JQ】jq动态绑定事件.on()、解绑事件off()
- JAVA核心技术I---JAVA基础知识(函数)
- js替换全部,js检查输入的日期是否是一个正确的日期格式
- 使用 python -m SimpleHTTPServer 快速搭建http服务
- ruby----controller中简单的增删改 方法定义
- Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user&#39;s experience. For more jquery-1.12.4.js:10208