zoukankan      html  css  js  c++  java
  • TYVJ1061 Mobile Service

    P1061 Mobile Service
    时间: 1000ms / 空间: 131072KiB / Java类名: Main
    描述
    一个公司有三个移动服务员。如果某个地方有一个请求,某个员工必须赶到那个地方去(那个地方没有其他员工),某一时刻只有一个员工能移动。被请求后,他才能移动,不允许在同样的位置出现两个员工。从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
    输入

    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

    dp[i][j][k]表示第i个请求,三个服务员分别处在j,k,p[i]位置的最小值。但发现如果开1000*200*200会MLE,所以将第一维开成滚动数组。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    const int maxn = 201;
    const int inf = 0x3f3f3f3f;
    int c[maxn][maxn],l,n,dp[2][maxn][maxn],pos[1001],ans=0x7f7f7f7f,r;
    int main() {
        scanf("%d%d",&l,&n);
        for(register int i=1; i<=l; i++)
            for(register int j=1; j<=l; j++)
                scanf("%d",&c[i][j]);
        for(register int i=1; i<=n; i++)
            scanf("%d",&pos[i]);
        memset(dp,0x3f,sizeof(dp));
        dp[0][1][2]=0;
        dp[0][2][1]=0;
        pos[0]=3;
        for(register int i=0; i<n; i++) {
            r^=1;
            for(register int j=1; j<=l; j++)
                for(register int k=1; k<=l; k++)
                    dp[r][j][k]=inf;
            for(register int j=1; j<=l; j++)    
                for(register int k=1; k<=l; k++) {
                    dp[r][j][k]=min(dp[r][j][k],dp[r^1][j][k]+c[pos[i]][pos[i+1]]);
                    dp[r][j][pos[i]]=min(dp[r][j][pos[i]],dp[r^1][j][k]+c[k][pos[i+1]]);
                    dp[r][pos[i]][k]=min(dp[r][pos[i]][k],dp[r^1][j][k]+c[j][pos[i+1]]);
                }
        }
        for(register int i=1; i<=l; i++)
            for(register int j=1; j<=l; j++) {
                ans=min(dp[r][i][j],ans);
            }
        printf("%d",ans);
    }
  • 相关阅读:
    py基础之模块与包
    py装饰器,生成器,迭代器
    py函数式编程
    py基础之列表生成式
    算法基础之递归算法
    Py基础之函数
    py基础之无序列表
    py基础之数据类型及基本语法
    jsp报错问题汇总
    mysql问题汇总
  • 原文地址:https://www.cnblogs.com/sdfzsyq/p/9677150.html
Copyright © 2011-2022 走看看