【BZOJ1820】[JSOI2010]快递服务(动态规划)
【BZOJ1820】[JSOI2010]快递服务(动态规划)
题面
题解
考虑无脑四维\(dp\)。\(f[i][a][b][c]\),表示当前处理到第\(i\)个任务,三辆车的位置分别在\(a,b,c\)的最小值。
发现\(a,b,c\)中一定有一个等于第\(i\)个任务的位置,显然可以再咕掉一维。这样子状态就只有三维,也就是\(O(nm^2)\),然而空间小,再滚一维就好了。
时间复杂度\(O(nm^2)\)
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
using namespace std;
#define ll long long
#define MAX 205
inline int read()
{
int x=0;bool t=false;char ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
if(ch=='-')t=true,ch=getchar();
while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
return t?-x:x;
}
int d[MAX][MAX];
int f[2][MAX][MAX];
int n,x,nw,pw,a[1010],m,ans;
void cmin(int &x,int y){x=min(x,y);}
int main()
{
n=read();
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
d[i][j]=read();
memset(f,63,sizeof(f));
f[0][2][3]=0;a[0]=1;nw=0;pw=1;
while(scanf("%d",&x)!=EOF)
{
swap(nw,pw);a[++m]=x;
memset(f[nw],63,sizeof(f[nw]));
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
{
cmin(f[nw][i][j],f[pw][i][j]+d[a[m-1]][x]);
if(a[m-1]<j)cmin(f[nw][a[m-1]][j],f[pw][i][j]+d[i][x]);
else cmin(f[nw][j][a[m-1]],f[pw][i][j]+d[i][x]);
if(a[m-1]<i)cmin(f[nw][a[m-1]][i],f[pw][i][j]+d[j][x]);
else cmin(f[nw][i][a[m-1]],f[pw][i][j]+d[j][x]);
}
ans=1e9;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
ans=min(ans,f[nw][i][j]);
cerr<<ans<<endl;
}
printf("%d\n",ans);
return 0;
}
【BZOJ1820】[JSOI2010]快递服务(动态规划)的更多相关文章
- [bzoj1820][JSOI2010][Express Service 快递服务] (动态规划)
Description 「飞奔」快递公司成立之后,已经分别与市内许多中小企业公司签订邮件收送服务契约.由于有些公司是在同一栋大楼内,所以「飞奔」公司收件的地点(收件点)最多只有m点 (1, 2, …, ...
- [JSOI2010]快递服务
Description Luogu4046 BZOJ1820 Solution 暴力DP很好想,\(f[i][j][k][l]\)表示处理到第\(i\)个任务,三个人在\(i,j,k\)的方案数.显然 ...
- P4046 [JSOI2010]快递服务
传送门 很容易想出\(O(n^3m)\)的方程,三维分别表示某个快递员现在在哪里,然后直接递推即可 然而这样会T,考虑怎么优化.我们发现每一天的时候都有一个快递员的位置是确定的,即在前一天要到的位置. ...
- CH5102/SPOJ?? Mobile Service/P4046 [JSOI2010]快递服务[线性dp+卡常]
http://contest-hunter.org:83/contest/0x50%E3%80%8C%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E3%80%8D%E4%B ...
- 【BZOJ1820】[JSOI2010]Express Service 快递服务 暴力DP
[BZOJ1820][JSOI2010]Express Service 快递服务 Description 「飞奔」快递公司成立之后,已经分别与市内许多中小企业公司签订邮件收送服务契约.由于有些公司是在 ...
- bzoj千题计划201:bzoj1820: [JSOI2010]Express Service 快递服务
http://www.lydsy.com/JudgeOnline/problem.php?id=1820 很容易想到dp[i][a][b][c] 到第i个收件地点,三个司机分别在a,b,c 收件地点的 ...
- 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]Express Service 快递服务(DP)
Description 「飞奔」快递公司成立之后,已经分别与市内许多中小企业公司签订邮件收送服务契约.由于有些公司是在同一栋大楼内,所以「飞奔」公司收件的地点(收件点)最多只有m点 (1, 2, …, ...
随机推荐
- 基于tensorflow的躲避障碍物的ai训练
import pygameimport randomfrom pygame.locals import *import numpy as npfrom collections import deque ...
- MGR主从不一致问题排查与修复
运行环境 linux:CentOS release 6.8 (Final) kernel:2.6.32-642.6.2.el6.x86_64 mysql Server version: 5.7.21- ...
- Docker网络解决方案 - Calico部署记录
简单来说,实现docker跨主机容器间通信,常用的第三方网络方案是Flannel,Weave,Calico:Flannel会为每个host分配一个subnet,容器从这个subnet中分配ip,这些i ...
- mysql 编码和汉字存储占用字节问题的探索
MySql 5.5 之前,UTF8 编码只支持1-3个字节,只支持BMP这部分的unicode编码区,BMP是从哪到哪?基本就是 0000 ~ FFFF 这一区. 从MySQL 5.5 开始,可支持4 ...
- http 概念
什么是回调? 什么是同步/异步? 什么是I/O? 什么是单线/多线程? 什么是阻塞/非阻塞? 什么是事件? 什么是事件驱动? 什么是基于事件驱动的回调? 什么是事件循环?
- Java8之集合排序
1,List<Map<String,Object>>格式 //排序 Comparator<Map<String, Object>> comparator ...
- 2-Twenty Fourth Scrum Meeting-20151230
前言 因为服务器关闭,我们的开发项目也遭遇停滞一个星期.与网站开发负责人员协商之后,29号开放服务器.我们的项目也能够继续下去.比规定的开发时间(截止为2015/12/29)推迟. 事项安排 1.开发 ...
- Linux内核分析第一次学习报告
Linux内核分析第一次学习报告 学生 黎静 学习内容 1.存储程序计算机工作模型 冯诺依曼体系结构:核心思想为存储程序计算机. CPU抽象为for循环,总是执行下一条指令,内存保存指令和数据,CPU ...
- Zookeeper 3.4.8分布式安装
1.机器信息 五台centos 64位机器 2.集群规划 Server Name Hadoop Cluster Zookeeper Ensemble HBase Cluster Hadoop01 ...
- Maven的课堂笔记1
1 什么是maven? Maven是一个跨平台的项目管理工具,主要用于基于java平台的项目构建,依赖管理. Clean compile test package install run ...