• [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
  • 相关阅读:
    dracut-initqueue timeout
    Request.Url
    ipv4 ipv6数据库存储
    DataRow To DataTable
    AS ShortCut
    linq on 多链接条件
    SQL逻辑查询语句执行顺序
    ckeditor 使用几点
    SqlDataAdapter 更新插入 与 InsertBulkCopy
    HTTP协议改HTTPS
  • 原文地址:https://www.cnblogs.com/sdfzhsz/p/9279009.html
Copyright © 2020-2023  润新知