zoukankan      html  css  js  c++  java
  • [tyvj-1061]Mobile Service 动态规划

    滚动数组优化一波。
    原设计状态:表示三个员工分别的位置和执行到的任务。
    考虑到:执行完第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);
    }
    
    我是咸鱼。转载博客请征得博主同意Orz
  • 相关阅读:
    Hibernate 中 get()和load()的区别
    Socket网络编程
    经典
    jsp的九大内置对象及EL表达式的隐含对象
    TreeSet
    centos7.4安装npm
    centos7.4中安装docker
    centos7安装nginx
    centos中安装基础环境
    在docker中安装mysql
  • 原文地址:https://www.cnblogs.com/sdfzhsz/p/9279009.html
Copyright © 2011-2022 走看看