BZOJ1820:[JSOI2010]Express Service 快递服务(DP)
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
6
样例说明:到每个请求收件地点的司机分别为1 1 1 1 3 3 2 2 2 1,因此司机1只需从起使点1移动到地点3,司机2只需停留在地点2,司机3从起始点3移动到地点4。
Solution
sbDP,基本相当于昨晚上nowcoder的弱化版
因为一个地方j和k写反调了半天……GG
考虑裸暴力,f[num][i][j][k]表示当前完成了第num个收件点,三辆车分别在ijk三个位置
很容易发现ijk可以优化掉一维因为一定有一辆车在上一个收件点a[num-1]
再滚动数组优化一下第一维就可以过了,f[0/1][i][j]表示一辆车在i,一辆在j。复杂度m*n^2
Code
#include<iostream>
#include<cstring>
#include<cstdio>
#define N (205)
using namespace std;
int f[][N][N],dis[N][N],a[N*],n,m,x,pre=,now=;
int main()
{
memset(f,0x3f,sizeof(f));
scanf("%d",&n);
for (int i=; i<=n; ++i)
for (int j=; j<=n; ++j)
scanf("%d",&dis[i][j]);
while (scanf("%d",&x)!=EOF) a[++m]=x; f[][][]=f[][][]=dis[][a[]];
f[][][]=f[][][]=dis[][a[]];
f[][][]=f[][][]=dis[][a[]]; for (int i=; i<=m; ++i)
{
memset(f[now],0x3f,sizeof(f[now]));
for (int j=; j<=n; ++j)
for (int k=; k<=n; ++k)
{
f[now][j][k]=f[now][k][j]=min(f[now][j][k], f[pre][j][k]+dis[a[i-]][a[i]]);
f[now][a[i-]][j]=f[now][j][a[i-]]=min(f[now][j][a[i-]], f[pre][j][k]+dis[k][a[i]]);
f[now][a[i-]][k]=f[now][k][a[i-]]=min(f[now][k][a[i-]], f[pre][j][k]+dis[j][a[i]]);
}
pre^=; now^=;
} int ans=0x7fffffff;
for (int i=; i<=n; ++i)
for (int j=; j<=n; ++j)
ans=min(ans,f[pre][i][j]);
printf("%d",ans);
}
BZOJ1820:[JSOI2010]Express Service 快递服务(DP)的更多相关文章
- BZOJ 1820: [JSOI2010]Express Service 快递服务( dp )
dp(i,j,k)表示在处理第i个业务, 另外2个在j,k处. 第一维可以滚动... --------------------------------------------------------- ...
- 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 快递服务] (动态规划)
Description 「飞奔」快递公司成立之后,已经分别与市内许多中小企业公司签订邮件收送服务契约.由于有些公司是在同一栋大楼内,所以「飞奔」公司收件的地点(收件点)最多只有m点 (1, 2, …, ...
- 【BZOJ1820】[JSOI2010]Express Service 快递服务 暴力DP
[BZOJ1820][JSOI2010]Express Service 快递服务 Description 「飞奔」快递公司成立之后,已经分别与市内许多中小企业公司签订邮件收送服务契约.由于有些公司是在 ...
- 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 注 ...
随机推荐
- linux中终端字体样式显示不正常
问题:Centos终端中,字体显示不正常,中间感觉有空格,空格和单词傻傻分不清. 解决办法: yum groupinstall "Chinese Support" yum grou ...
- Django_Xadmin 修改后台
admin组件使用 Django 提供了基于 web页面的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以在项目的 settings.py 中的 INSTA ...
- k8s 集群搭建
一,环境介绍 master node1 node2 IP 192.168.0.164 192.168.0.165 192.168.0.167 环境 centos 7 centos 7 centos ...
- Linux软件安装的补充
1 使用yum 命令查看软件提供的版本 yum list mysql* 然后比如说都需要安装我们就可以执行命令: yum install mysql* 然后就会安装所有的.会显示所有需要安装的包,和需 ...
- Mixamo Fuse10分钟创建角色
http://edu.manew.com/course/132 太6了
- Oracle11gExpress和PL/SQL Developer安装
Oracle11g为64位版本,PL/SQL Developer为32位版本 1.安装64为Oracle数据库/ 适用于 Microsoft Windows (x64) 的 Oracle Databa ...
- 周记1——WebSocket入门
一周复一周,时间过得飞快,每个周末都是很开心却又很彷徨.开心的是不用工作,彷徨的是自己这周学到了什么.自身的技能有没有提高.如何应对这个日新月异的社会... 本周的工作的开发IM(即时聊天)模块,要用 ...
- wex5新增数据库
首先是要打开Wex5 (这是废话,下面进入正题..) 1.第一步,找到界面中的 ”窗口” 点击打开,你会看到一个 “ 首选项 ”按照流程也要打开 (囧),,,,,,,,看图为重 2.当你打开了 “ ...
- java.util.regex.Pattern正则表达式写验证器示例
import java.util.regex.Pattern; /** * 校验器:利用正则表达式校验邮箱.手机号等 * */ public class Validator { /** * 正则表达式 ...
- guava的限流工具RateLimiter使用
guava限流工具使用 非常详细的一篇使用博客:https://www.cnblogs.com/yeyinfu/p/7316972.html 1,原理:Guava RateLimiter基于令牌桶算法 ...