滚动数组优化一波。

原设计状态:表示三个员工分别的位置和执行到的任务。

考虑到:执行完第i个任务,一定有员工在pos[i],那么就可以压一维,空间复杂度就算不滚动数组也可以了。

(喜闻乐见,今天第一次)1A

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int l,n,g[305][305],a[1005],f[2][205][205];
int main() {
scanf("%d%d",&l,&n);
for(int i=1; i<=l; i++)
for(int j=1; j<=l; j++)
scanf("%d",&g[i][j]);
for(int i=1; i<=n; i++) scanf("%d",&a[i]);
memset(f,0x3f,sizeof f);
f[0][1][2]=0;
a[0]=3;
for(int k=0; k<n; k++) {
for(int i=1; i<=l; i++)
for(int j=1; j<=l; j++)
f[k+1&1][i][j]=min(f[k+1&1][i][j],f[k&1][i][j]+g[a[k]][a[k+1]]),
f[k+1&1][a[k]][j]=min(f[k+1&1][a[k]][j],f[k&1][i][j]+g[i][a[k+1]]),
f[k+1&1][i][a[k]]=min(f[k+1&1][i][a[k]],f[k&1][i][j]+g[j][a[k+1]]);
memset(f[k&1],0x3f,sizeof f[0]);
}
n&=1;
int ans=1<<30;
for(int i=1; i<=l; i++)
for(int j=1; j<=l; j++)
ans=min(ans,f[n][i][j]);
printf("%d",ans);
}

[tyvj-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. [JOYOI] 1061 Mobile Service

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

  4. CH5102 Mobile Service【线性dp】

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

  5. 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 " ...

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

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

  7. vs2015-Azure Mobile Service

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

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

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

  9. CH5102 Mobile Service

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

随机推荐

  1. CODEVS——T 2618 核电站问题

    http://codevs.cn/problem/2618/  时间限制: 1 s  空间限制: 32000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description ...

  2. LINUX内核内存屏障

    =================                          LINUX内核内存屏障                          ================= By ...

  3. Thread.yield()方法表示交出主动权,join表示等待当前线程,可以指定秒数

    Thread.yield()方法表示交出主动权,join表示等待当前线程,可以指定秒数 学习了:http://www.importnew.com/14958.html 膜拜一下 源码膜拜: Threa ...

  4. hdu1542 Atlantis(扫描线+线段树+离散)矩形相交面积

    题目链接:点击打开链接 题目描写叙述:给定一些矩形,求这些矩形的总面积.假设有重叠.仅仅算一次 解题思路:扫描线+线段树+离散(代码从上往下扫描) 代码: #include<cstdio> ...

  5. leetcode_num179_Largest Number

    Given a list of non negative integers, arrange them such that they form the largest number. For exam ...

  6. JAVA基础实例(一)

    1写一个方法,用一个for循环打印九九乘法表 /** *一个for循环打印九九乘法表 */ public void nineNineMultiTable() { for (int i = 1,j = ...

  7. HDU oj A + B Problem II

    郁闷了就相同的代码在HDUOJ上提交就是AC在NYOJ上提交就是WA字符串处理 #include<stdio.h> #include<string.h> #define N 1 ...

  8. MyBatis中sqlSession操作数据库,不报错但无法实现数据修改(增、改、删)

    public void addCustomerTest() throws Exception { SqlSession sqlSession = MyBatisUtils.getSession(); ...

  9. 【java项目实战】ThreadLocal封装Connection,实现同一线程共享资源

    线程安全一直是程序员们关注的焦点.多线程也一直是比較让人头疼的话题,想必大家以前也遇到过各种各种的问题.我就不再累述了.当然,解决方案也有非常多,这篇博文给大家提供一种非常好的解决线程安全问题的思路. ...

  10. CentOS6.8 安装 mysql 5.6

    安装前的准备: 1.确认是否安装过mysql: yum list installed | grep mysql 2.删除系统自带的mysql及其依赖命令: yum -y remove mysql-li ...