[bzoj1820][JSOI2010][Express Service 快递服务] (动态规划)
Description
Input
Output
Sample Input
0 5 0 6
6 0 5 6
1 6 0 6
1 1 1 0
1 1 1 1 4 4 2 2 2 3
Sample Output
样例说明:到每个请求收件地点的司机分别为1 1 1 1 3 3 2 2 2 1,因此司机1只需从起使点1移动到地点3,司机2只需停留在地点2,司机3从起始点3移动到地点4。
HINT
Source
Solution
设计状态,令f[w][i][j][k]为处理完第w个请求后,三辆车分别在i\j\k三个点的最小耗油量
因为一定有一辆车正好停在点a[w],所以省掉一维空间,得到f[w][i][j]
因为这样做数组太大会超时(有一定联系),考虑每一次都由上一个请求转移到下一个请求,把w优化成滚动维
最后转移一下就行了
#include <stdio.h>
#include <memory.h>
#define MaxN 1001
#define MaxM 201
#define dmin(a,b) ((a)<(b)?(a):(b))
int g[MaxM][MaxM],a[MaxN],m,n,f[][MaxM][MaxM],T,ans=0x3f3f3f3f;
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
scanf("%d",&g[i][j]);
while(scanf("%d",&a[++m])!=EOF);
memset(f,0x3f,sizeof f);
f[T][][]=f[T][][]=g[][a[]];
f[T][][]=f[T][][]=g[][a[]];
f[T][][]=f[T][][]=g[][a[]];
for(int k=;k<m;k++){
T^=; memset(f[T],0x3f,sizeof f[T]);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++){
f[T][i][j]=f[T][j][i]=dmin(f[T][i][j],f[T^][i][j]+g[a[k-]][a[k]]);
f[T][a[k-]][j]=f[T][j][a[k-]]=dmin(f[T][a[k-]][j],f[T^][i][j]+g[i][a[k]]);
f[T][a[k-]][i]=f[T][i][a[k-]]=dmin(f[T][a[k-]][i],f[T^][i][j]+g[j][a[k]]);
}
}
for(int i=;i<=n;i++)for(int j=;j<=n;j++)ans=dmin(ans,f[T][i][j]);
printf("%d\n",ans);
return ;
}
[bzoj1820][JSOI2010][Express Service 快递服务] (动态规划)的更多相关文章
- bzoj千题计划201:bzoj1820: [JSOI2010]Express Service 快递服务
http://www.lydsy.com/JudgeOnline/problem.php?id=1820 很容易想到dp[i][a][b][c] 到第i个收件地点,三个司机分别在a,b,c 收件地点的 ...
- BZOJ1820:[JSOI2010]Express Service 快递服务(DP)
Description 「飞奔」快递公司成立之后,已经分别与市内许多中小企业公司签订邮件收送服务契约.由于有些公司是在同一栋大楼内,所以「飞奔」公司收件的地点(收件点)最多只有m点 (1, 2, …, ...
- 【BZOJ1820】[JSOI2010]Express Service 快递服务 暴力DP
[BZOJ1820][JSOI2010]Express Service 快递服务 Description 「飞奔」快递公司成立之后,已经分别与市内许多中小企业公司签订邮件收送服务契约.由于有些公司是在 ...
- BZOJ 1820: [JSOI2010]Express Service 快递服务( dp )
dp(i,j,k)表示在处理第i个业务, 另外2个在j,k处. 第一维可以滚动... --------------------------------------------------------- ...
- 1820: [JSOI2010]Express Service 快递服务
1820: [JSOI2010]Express Service 快递服务 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 847 Solved: 325 ...
- 【BZOJ1820】[JSOI2010]快递服务(动态规划)
[BZOJ1820][JSOI2010]快递服务(动态规划) 题面 BZOJ 洛谷 题解 考虑无脑四维\(dp\).\(f[i][a][b][c]\),表示当前处理到第\(i\)个任务,三辆车的位置分 ...
- Windows Service插件服务开源
WindowsService 插件服务是一个为简化NTService开发和打包程序,提供插件开发的方式进行动态加入或删除业务. 插件式服务程序的由来,在系统维护的过程中,根据企业的要求经常要进行一些周 ...
- WCF Restful Service的服务
构建基于WCF Restful Service的服务 前言 传统的Asmx服务,由于遵循SOAP协议,所以返回内容以xml方式组织.并且客户端需要添加服务端引用才能使用(虽然看到网络上已经提供了这方面 ...
- Docker Kubernetes Service 网络服务代理模式详解
Docker Kubernetes Service 网络服务代理模式详解 Service service是实现kubernetes网络通信的一个服务 主要功能:负载均衡.网络规则分布到具体pod 注 ...
随机推荐
- Tool:Adobe Photoshop
ylbtech-Tool-Adobe:Adobe Photoshop 1.返回顶部 1. Adobe Photoshop,简称“PS”,是由Adobe Systems开发和发行的图像处理软件. Pho ...
- [App Store Connect帮助]四、添加 App 图标、App 预览和屏幕快照(2)添加一个 App Store 图标
您必须提供一个 App Store 图标,用于在 App Store 中的不同部分展示您的 App.请遵照 Human Interface Guidelines(<人机界面准则>)创建您的 ...
- 为什么前后端分离不利于seo
搜索引擎的基础爬虫的原理就是抓取你的url,然后获取你的html源代码并解析. 而你的页面通常用了vue等js的数据绑定机制来展示页面数据,爬虫获取到的html是你的模型页面而不是最终数据的渲染页面, ...
- 常用JavaScript代码库(又名:WFang.js)
1.根据公司项目封装ajax请求,结合layer框架一起使用 /*提取接口公共部分*/ var ApiConf = { server:"http://localhost:8080/Batte ...
- tablespace monitor shell for windows
1. #! /bin/ksh #set -x SID=$1 ORACLE_SID=stat10gORACLE_HOME=/oracle10g/product/10.2PATH=$PATH:/usr/b ...
- 初窥Android Studio
Android Studio 是一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于 ...
- 倒计时和div幻灯片
倒计时从10秒开始,10秒之后,同意按钮可以使用. 设置一个区域背景,三张照片滚动显示,左右按钮可以下一张上一张,如果点击了左右按钮就不再自动滚动.
- [Python实战] 功能简单的数据查询及可视化系统
前言 数据时代,数据的多源集成和快速检索查询是第一步,配上数据分析及可视化才能算窥得大数据一角. 创建这个项目的主要目的一是对前期工作的一些总结,二是提升自己. 这里简单介绍一下sqlpro这个项目的 ...
- Sql 存储过程动态添加where条件
)= '2,3' )= '' ) if(@bussHallId is not null) set @strWhere = @strWhere + ' and bh.ID in ('+@bussHall ...
- 预采订单管理接收来源App数据