题目限制
时间限制 内存限制 评测方式 题目来源
1000ms 131072KiB 标准比较器 Local
题目描述
一个公司有三个移动服务员。如果某个地方有一个请求,某个员工必须赶到那个地方去(那个地方没有其他员工),某一时刻只有一个员工能移动。被请求后,他才能移动,不允许在同样的位置出现两个员工。从p到q移动一个员工,需要花费c(p,q)。这个函数没有必要对称,但是c(p,p)=0。公司必须满足所有的请求。目标是最小化公司花费。 输入格式
第一行有两个整数L,N(3<=L<=200, 1<=N<=1000)。L是位置数;N是请求数。每个位置从1到L编号。下L行每行包含L个非负整数。第i+1行的第j个数表示c(i,j) ,并且它小于2000。最后一行包含N个数,是请求列表。一开始三个服务员分别在位置1,2,3。 输出格式
一个数M,表示最小服务花费。 样例数据
输入样例 #1 输出样例 #1
5 9
0 1 1 1 1
1 0 2 3 2
1 1 0 4 1
2 1 5 0 1
4 2 3 4 0
4 2 4 1 5 4 3 2 1
5

最朴素的设计是 f[i][x][y][z] 处理第i个请求时,三个人分别在x,y,z处,然后比较x,y,z到新请求地点的费用即可。

然后发现空间不够。。那就考虑优化它。

第一个是滚动数组,i行只依赖i-1行,这个很好想。

第二个是砍掉一维,因为在处理第i个请求时,上一个请求(i-1个)一定已经处理好了,所以三个人一定有一个站在ask[i-1]处,三维里有一维是冗余信息,所以

f[i][x][y] 表示处理第i个请求的时候,两个人站在x,y处(另一个在ask[i-1]处) 时的最小花费

边界的处理,令ask[0]=3,f[0][1][2] 就是三个人站在1,2,3处的初态。

//Stay foolish,stay hungry,stay young,stay simple
#include<iostream>
#include<cstdio>
#include<cctype>
#include<cstring>
using namespace std; const int INF=1<<30; inline int read_d(){
int ret=0;char c;
while(c=getchar(),!isdigit(c));
while(isdigit(c)) ret=ret*10+c-'0',c=getchar();
return ret;
} int n,m;
int ask[1002];
int cost[202][202];
int f[2][202][202]; int main(){
memset(f,0x3f,sizeof(f));
n=read_d();m=read_d();
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cost[i][j]=read_d();
for(int i=1;i<=m;i++)
ask[i]=read_d();
ask[0]=3;f[0][1][2]=0;
int l=0,p=1;
for(int i=1;i<=m;i++){
memset(f[p],0x3f,sizeof(f[p]));
l^=1;p^=1;
int u=ask[i-1],v=ask[i];
for(int j=1;j<=n+1;j++){
for(int k=1;k<=n;k++){
f[l][j][k]=
min(f[l][j][k],f[p][j][k]+cost[ask[i-1]][v]);
f[l][u][k]=
min(f[l][u][k],f[p][j][k]+cost[j][v]);
f[l][j][u]=
min(f[l][j][u],f[p][j][k]+cost[k][v]);
}
} }
int ans=INF;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
ans=min(ans,f[m&1][i][j]);
cout<<ans<<endl;
return 0;
}

[JOYOI] 1061 Mobile Service的更多相关文章

  1. tyvj 1061 Mobile Service

    线性DP 本题的阶段很明显,就是完成了几个请求,但是信息不足以转移,我们还需要存储三个服务员的位置,但是三个人都存的话会T,我们发现在阶段 i 处,一定有一个服务员在 p[i] 处,所以我们可以只存另 ...

  2. [tyvj 1061] Mobile Service (线性dp 滚动数组)

    3月15日第一题! 题目限制 时间限制 内存限制 评测方式 题目来源 1000ms 131072KiB 标准比较器 Local 题目描述 一个公司有三个移动服务员.如果某个地方有一个请求,某个员工必须 ...

  3. Unable to create Azure Mobile Service: Error 500

    I had to go into my existing azure sql database server and under the configuration tab select " ...

  4. 如何使用新浪微博账户进行应用登录验证(基于Windows Azure Mobile Service 集成登录验证)

    使用三方账号登录应用应该对大家来说已经不是什么新鲜事儿了,但是今天为什么还要在这里跟大家聊这个话题呢,原因很简单 Windows Azure Mobiles Service Authenticatio ...

  5. vs2015-Azure Mobile Service

    /App_Data /App_Start/ WebApiConfig.cs using System; using System.Collections.Generic; using System.C ...

  6. windows phone开发-windows azure mobile service使用入门

    在使用azure之前,我一直只能做本地app,或者使用第三方提供的api,尽管大多数情况下够用,但是仍不能随心所欲操纵数据,这种感觉不是特别好.于是在azure发布后,我就尝试使用azure来做为个人 ...

  7. CH5102 Mobile Service【线性dp】

    5102 Mobile Service 0x50「动态规划」例题 描述 一个公司有三个移动服务员,最初分别在位置1,2,3处.如果某个位置(用一个整数表示)有一个请求,那么公司必须指派某名员工赶到那个 ...

  8. CH5102 Mobile Service

    CH5102 Mobile Service 描述 一个公司有三个移动服务员,最初分别在位置1,2,3处.如果某个位置(用一个整数表示)有一个请求,那么公司必须指派某名员工赶到那个地方去.某一时刻只有一 ...

  9. CH 5102 Mobile Service(线性DP)

    CH 5102 Mobile Service \(solution:\) 这道题很容易想到DP,因为题目里已经说了要按顺序完成这些请求.所以我们可以线性DP,但是这一题的状态不是很好设,因为数据范围有 ...

随机推荐

  1. 51nod1432【贪心】

    对于每个数我找一个和他相加最接近独木舟,然后ans+=1; 想复杂了,直接两端来就好了. 然后两个相加如果<=m那么就让它们在一起,不是的话就让大的一艘船,然后继续搞(贪心) #include ...

  2. 【Nginx】解决Post请求变Get的问题

    默认情况下Nginx会把post请求做一次重定向操作,然后后端收到的就成了Get请求,还会导致一些参数的遗漏. 日志如下: 172.16.1.108 - - [11/Jan/2019:18:27:09 ...

  3. Jquery | 基础 | 慕课网 | 元素选择器

    getElementsByTagName方法得到页面所有的<div>元素 var divs = document.getElementsByTagName('div'); 与 同样的效果, ...

  4. [APIO2012]派遣 洛谷P1552 bzoj2809 codevs1763

    http://www.codevs.cn/problem/1763/ https://www.lydsy.com/JudgeOnline/problem.php?id=2809 https://www ...

  5. 503 Next Greater Element II 下一个更大元素 II

    给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素.数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它 ...

  6. VUE学习——vue的内部指令学习(趁自己没忘,学习记录一下)

    1.v-if&v-else&v-show v-if用来判断是否加载html的DOM,v-if和v-else一般是一起用的. v-show相当于display,DOM已经加载出来了,这个 ...

  7. 使用MySQL统计页面访问及排名

    统计访问页面数量,以分辨率进行排名 SELECT CONCAT(`height` , '*', `width`) AS `resolution` , COUNT(CONCAT(`height`, '* ...

  8. 盘点那些年,被Oracle收购的公司

    微博上看到一图,很清晰.盘点那些年,被Oracle收购的公司,Oracle日益强大,都收购了哪些公司呢?别再以为只有Sun啦...看看你都知道哪些? ps:Strategic Acquisitions ...

  9. IOS应用

    下面是这个类的一些功能: 1.设置icon上的数字图标 //设置主界面icon上的数字图标,在2.0中引进, 缺省为0 [UIApplicationsharedApplication].applica ...

  10. IE8 window.open 不支持此接口 的问题解决

    在使用vs2010调试代码时,突然出现 window.open 不支持此接口的提示,开始认为是不是vs的问题,后来上网查询说是系统问题.我不想重装系统,之后发现是IE的问题,使用其他浏览器浏览系统不会 ...