P4046 [JSOI2010]快递服务
很容易想出\(O(n^3m)\)的方程,三维分别表示某个快递员现在在哪里,然后直接递推即可
然而这样会T,考虑怎么优化。我们发现每一天的时候都有一个快递员的位置是确定的,即在前一天要到的位置。那么我们只要枚举剩下的两个人分别在哪里就行了,复杂度变为\(O(n^2m)\)
//minamoto
#include<bits/stdc++.h>
#define fp(i,a,b) for(register int i=a,I=b+1;i<I;++i)
#define fd(i,a,b) for(register int i=a,I=b-1;i>I;--i)
#define go(u) for(register int i=head[u],v=ver[i];i;i=Next[i],v=ver[i])
#define inf 0x3f3f3f3f
using namespace std;
template<class T>inline bool cmin(T&a,const T&b){return a>b?a=b,1:0;}
const int N=205,M=1005;
int G[N][N],dp[2][N][N],a[M],n,m,ans=inf;
int main(){
// freopen("testdata.in","r",stdin);
// freopen("express.in","r",stdin);
// freopen("express.out","w",stdout);
scanf("%d",&m);
fp(i,1,m)fp(j,1,m)scanf("%d",&G[i][j]);
while(~scanf("%d",&a[++n]));--n;
fp(i,1,m)fp(j,1,m)dp[0][i][j]=inf;
dp[0][1][2]=0,a[0]=3;
fp(t,0,n-1){
int p=t&1;
fp(i,1,m)fp(j,1,m)dp[p^1][i][j]=inf;
fp(i,1,m)fp(j,1,m)if(dp[p][i][j]!=inf){
cmin(dp[p^1][a[t]][j],dp[p][i][j]+G[i][a[t+1]]);
cmin(dp[p^1][i][a[t]],dp[p][i][j]+G[j][a[t+1]]);
cmin(dp[p^1][i][j],dp[p][i][j]+G[a[t]][a[t+1]]);
}
}
fp(i,1,m)fp(j,1,m)cmin(ans,dp[n&1][i][j]);
printf("%d\n",ans);return 0;
}
P4046 [JSOI2010]快递服务的更多相关文章
- 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\)的方案数.显然 ...
- 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 ...
- 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
[BZOJ1820][JSOI2010]Express Service 快递服务 Description 「飞奔」快递公司成立之后,已经分别与市内许多中小企业公司签订邮件收送服务契约.由于有些公司是在 ...
- [bzoj1820][JSOI2010][Express Service 快递服务] (动态规划)
Description 「飞奔」快递公司成立之后,已经分别与市内许多中小企业公司签订邮件收送服务契约.由于有些公司是在同一栋大楼内,所以「飞奔」公司收件的地点(收件点)最多只有m点 (1, 2, …, ...
- BZOJ1820:[JSOI2010]Express Service 快递服务(DP)
Description 「飞奔」快递公司成立之后,已经分别与市内许多中小企业公司签订邮件收送服务契约.由于有些公司是在同一栋大楼内,所以「飞奔」公司收件的地点(收件点)最多只有m点 (1, 2, …, ...
随机推荐
- C++ string使用
在c语言里,我们使用一个字符串时,是通过字符数组或者字符指针的方式来进行使用,在C++里,标准模板库已经给我们提供了string类型(string是以类的方式提供给我们使用). 定义和初始化strin ...
- Opencv下双线性插值法进行图像放缩
关于图像放缩的算法有很多,本文主要介绍双线性插值法进行图像放缩,本文参考了: http://www.cnblogs.com/funny-world/p/3162003.html 我们设源图像src的大 ...
- UVA - 1608 Non-boring sequences(分治法)
题目: 如果一个序列的任意连续的子序列中至少有一个只出现一次的元素,则称这个序列是不无聊的.输入一个n(n≤200000)个元素的序列A(各个元素均为109以内的非负整数),判断它是不是不无聊的. 思 ...
- ConcurrentHashMap笔记
概览: 内部存储的数据结构为:数组+链表+红黑树,图示: 重要的属性(内部类): //存放元素的数组 transient volatile Node<K,V>[] table; //数组中 ...
- 基于虚拟机的centos6.5 搭建本地光盘yum源
在线yum安装必须要保持服务器能够连入网络并且他下载的还会比较慢因为地址大部分多是国外的下载站.另外yum在线下载的都是比较新的软件包,可能不是很稳定,那么使用yum的本地资源就是光盘里的RPM包,让 ...
- STM32 实现 4*4 矩阵键盘扫描(HAL库、标准库 都适用)
本文实现的代码是基于STM32HAL库的基础上的,不过标准库也可以用,只是调用的库函数不同,逻辑跟配置是一样的,按我这里的逻辑来配置即可. 1.键盘原理图: 原理举例:先把 F0-F7 内部拉高,这样 ...
- FFT快速傅里叶变换
FFT太玄幻了,不过我要先膜拜HQM,实在太强了 1.多项式 1)多项式的定义 在数学中,由若干个单项式相加组成的代数式叫做多项式.多项式中的每个单项式叫做多项式的项,这些单项式中的最高项次数,就是这 ...
- [USACO 4.2] 完美的牛栏
★★☆ 输入文件:stall4.in 输出文件:stall4.out 简单对比 时间限制:1 s 内存限制:128 MB USACO/stall4(译by Felicia Crazy) ...
- Javaweb中文乱码问题
request.setCharacterEncoding("utf-8");必须写在获得参数之前,即request.getParameter();之前
- 使用pymongo.find查询很慢的解决方式
1.前言: mongodb部署在阿里云服务器, mongodb中collection存储了百万条记录. 需求:优化查询指定时间段内的所有数据的查询时间,结果有百万级别. 最初:313587条记录耗时: ...