【BZOJ1820】[JSOI2010]Express Service 快递服务 暴力DP
【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。
题解:一开始以为是个费用流,建图都差不多了(可以从有上下界的费用流考虑,建出来的图长得跟餐巾计划差不多),发现边数有点爆炸。。。
看题解,nm是个暴力!用f[i][a][b][c]表示收完第i个件,1号司机在地点a,2号在b,3号在c的最小总耗油量。显然a,b,c中一定有一个是i件的所在位置,所以可以缩掉一维。并且发现可以用滚动数组,所以又缩掉一维。空间复杂度O(n^2),时间复杂度O(n^2*m),然后就卡过了。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <queue>
using namespace std;
typedef long long ll;
int n,m;
int map[210][210],p[1010];
ll f[2][210][210];
ll ans;
int main()
{
scanf("%d",&n);
int i,j,k,d,a,b;
for(i=1;i<=n;i++) for(j=1;j<=n;j++) scanf("%d",&map[i][j]);
memset(f[0],0x3f,sizeof(f[0]));
p[0]=1,f[0][2][3]=0;
while(scanf("%d",&p[m+1])!=EOF) m++;
for(i=1;i<=m;i++)
{
d=i&1;
memset(f[d],0x3f,sizeof(f[d]));
for(j=1;j<=n;j++) for(k=j;k<=n;k++)
{
a=min(p[i-1],j),b=max(p[i-1],j),f[d][a][b]=min(f[d][a][b],f[d^1][j][k]+map[k][p[i]]);
a=min(p[i-1],k),b=max(p[i-1],k),f[d][a][b]=min(f[d][a][b],f[d^1][j][k]+map[j][p[i]]);
a=min(j,k),b=max(j,k),f[d][a][b]=min(f[d][a][b],f[d^1][j][k]+map[p[i-1]][p[i]]);
}
}
ans=1ll<<60;
for(i=1;i<=n;i++) for(j=i;j<=n;j++) ans=min(ans,f[n&1][i][j]);
printf("%lld",ans);
return 0;
}
【BZOJ1820】[JSOI2010]Express Service 快递服务 暴力DP的更多相关文章
- 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 快递服务] (动态规划)
Description 「飞奔」快递公司成立之后,已经分别与市内许多中小企业公司签订邮件收送服务契约.由于有些公司是在同一栋大楼内,所以「飞奔」公司收件的地点(收件点)最多只有m点 (1, 2, …, ...
- 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 ...
- 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]快递服务(动态规划)
[BZOJ1820][JSOI2010]快递服务(动态规划) 题面 BZOJ 洛谷 题解 考虑无脑四维\(dp\).\(f[i][a][b][c]\),表示当前处理到第\(i\)个任务,三辆车的位置分 ...
- [JSOI2010]快递服务
Description Luogu4046 BZOJ1820 Solution 暴力DP很好想,\(f[i][j][k][l]\)表示处理到第\(i\)个任务,三个人在\(i,j,k\)的方案数.显然 ...
- sshd服务---暴力破解应对策略
sshd服务暴力破解步骤 sshd暴力破解方法 防止暴力破解调优 1. 变更默认端口 2. 变更root用户 3. 日志监控-->防止暴力破解(fail2ban应用) fail2ban详解 在初 ...
随机推荐
- Python——Code Like a Pythonista: Idiomatic Python
Code Like a Pythonista: Idiomatic Python 如果你有C++基础,那学习另一门语言会相对容易.因为C++即面向过程,又面向对象.它很底层,能像C一样访问机器:它也很 ...
- Linux下 安装VMware Tools工具
Linux下需要安装VMware Tools工具 Linux下需要安装VMware Tools工具来实现主机和虚拟机直接文件复制粘贴功能,安装方法如下: ①点击虚拟机VM菜单栏--虚拟机--安装VMw ...
- 【Excle】二维表转化为一维表
现在我们想做如下操作: 想把表1的数据转化为表2的数据,那么我们只需要如下这段代码即可解决需求 Sub 转置() Dim i%, arr arr = Application.InputBox(&quo ...
- MySql常用函数数学函数、加密函数等(转—收藏)
MySql函数众多,这里只是列举了一部分常用的函数. 一.数学函数 ABS(x) // 返回x的绝对值 BI ...
- Hibernate单向“一对多”关联
1. 基于连接表的单向“一对多”关联,应该优先被采用其中指定many-to-many的unique="true",为单向“一对多”,不指定就是单向“多对多” <class n ...
- Mysql纯命令行添加用户及权限
原文链接:http://hi.baidu.com/ngy1991/item/45978bd05d82c7ea785daa42 创建用户: 命令: 1 CREATE USER 'username'@'h ...
- Retrofit2和RxJava配合使用Demo
和Retrofit2单独使用有一些区别 首先,同样写个interface,这里是GitHubService.java,我们这次要实现获取官方提供的测试接口的数据 public interface Gi ...
- CSS3怎样实现超出指定文本以省略号显示效果
作者:zhanhailiang 日期:2014-10-24 不做前端非常久了,今天从重构师那里了解到CSS3已经能够实现非常多以往必须通过JS才干实现的效果,如渐变,阴影,自己主动截断文本展示省略号等 ...
- vue 过滤与全文索引
过滤 与 全文索引 <template> <div> <input type="text" v-model="query"> ...
- Atitit. Js 冒泡事件阻止 事件捕获 事件传递 事件代理
Atitit. Js 冒泡事件阻止 事件捕获 事件传递 事件代理 1. 事件冒泡1 2. 事件捕获1 3. 同时支持了事件捕获阶段和事件冒泡阶段ddEventListener的第三个参数1 ...