#动态规划#SP703 codevs 2182 1383 CH 5102 Mobile Service 移动服务

2024-02-11 06:08

本文主要是介绍#动态规划#SP703 codevs 2182 1383 CH 5102 Mobile Service 移动服务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目

有三个移动服务员,最初分别在位置1,2,3处。
如果某个位置(用一个整数表示)有一个请求,那么公司必须指派某名员工赶到那个地方去。某一时刻只有一个员工能移动,且不允许在同样的位置出现两个员工。从 p p p q q q移动一个员工,需要花费 c ( p , q ) c(p,q) c(p,q)。求最小花费。


分析

用动态规划,但是普通的动态规划不仅时间超时,空间也无法满足,所以需要优化,可以发现员工应该在的位置其实是冗余,所以说可以优化为

f[x][i][j]=f[x][j][i]=min(f[x][i][j],f[x^1][i][j]+c[ls][y]);//从上一个点赶到这一个点f[x][ls][j]=f[x][j][ls]=min(f[x][j][ls],f[x^1][i][j]+c[i][y]);//从i点赶到这一个点f[x][i][ls]=f[x][ls][i]=min(f[x][i][ls],f[x^1][i][j]+c[j][y]);//从j点赶到这一个点

时间复杂度 O ( m n 2 ) O(mn^2) O(mn2)


代码

#include <cstdio>
#include <cstring>
int n,m,ls,y,f[2][201][201],c[201][201];
int in(){int ans=0; char c=getchar();while (c<48||c>57) c=getchar();while (c>47&&c<58) ans=ans*10+c-48,c=getchar();return ans;
}
int min(int a,int b){return (a<b)?a:b;}
int main(){n=in(); m=in(); memset(f[0],127/3,sizeof(f[0]));for (int i=1;i<=n;i++)for (int j=1;j<=n;j++) c[i][j]=in();ls=in(); int ans=f[0][0][0],x=0;f[0][1][2]=f[0][2][1]=c[3][ls]; //初始化f[0][1][3]=f[0][3][1]=c[2][ls];f[0][2][3]=f[0][3][2]=c[1][ls];while (--m){x^=1; memset(f[x],127/3,sizeof(f[x])); y=in();for (int i=1;i<=n;i++)for (int j=1;j<=n;j++)if (i!=j&&i!=ls&&j!=ls)//动态规划(滚动数组)f[x][i][j]=f[x][j][i]=min(f[x][i][j],f[x^1][i][j]+c[ls][y]),f[x][ls][j]=f[x][j][ls]=min(f[x][j][ls],f[x^1][i][j]+c[i][y]),f[x][i][ls]=f[x][ls][i]=min(f[x][i][ls],f[x^1][i][j]+c[j][y]);ls=y;}for (int i=1;i<=n;i++)for (int j=1;j<=n;j++) ans=min(ans,f[x][i][j]);return !printf("%d",ans);
}

这篇关于#动态规划#SP703 codevs 2182 1383 CH 5102 Mobile Service 移动服务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/699018

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

TP-Link PDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务

《TP-LinkPDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务》近期,路由器制造巨头普联(TP-Link)在用户群体中引发了一系列重要变动,上个月,公司发出了一则通知,明确要求所... 路由器厂商普联(TP-Link)上个月发布公告要求所有用户必须完成实名认证后才能继续使用普联提供的 D

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

Java使用POI-TL和JFreeChart动态生成Word报告

《Java使用POI-TL和JFreeChart动态生成Word报告》本文介绍了使用POI-TL和JFreeChart生成包含动态数据和图表的Word报告的方法,并分享了实际开发中的踩坑经验,通过代码... 目录前言一、需求背景二、方案分析三、 POI-TL + JFreeChart 实现3.1 Maven

Java导出Excel动态表头的示例详解

《Java导出Excel动态表头的示例详解》这篇文章主要为大家详细介绍了Java导出Excel动态表头的相关知识,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录前言一、效果展示二、代码实现1.固定头实体类2.动态头实现3.导出动态头前言本文只记录大致思路以及做法,代码不进

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构

vue基于ElementUI动态设置表格高度的3种方法

《vue基于ElementUI动态设置表格高度的3种方法》ElementUI+vue动态设置表格高度的几种方法,抛砖引玉,还有其它方法动态设置表格高度,大家可以开动脑筋... 方法一、css + js的形式这个方法需要在表格外层设置一个div,原理是将表格的高度设置成外层div的高度,所以外层的div需要

使用TomCat,service输出台出现乱码的解决

《使用TomCat,service输出台出现乱码的解决》本文介绍了解决Tomcat服务输出台中文乱码问题的两种方法,第一种方法是修改`logging.properties`文件中的`prefix`和`... 目录使用TomCat,service输出台出现乱码问题1解决方案问题2解决方案总结使用TomCat,

Java中使用Java Mail实现邮件服务功能示例

《Java中使用JavaMail实现邮件服务功能示例》:本文主要介绍Java中使用JavaMail实现邮件服务功能的相关资料,文章还提供了一个发送邮件的示例代码,包括创建参数类、邮件类和执行结... 目录前言一、历史背景二编程、pom依赖三、API说明(一)Session (会话)(二)Message编程客

SpringBoot实现动态插拔的AOP的完整案例

《SpringBoot实现动态插拔的AOP的完整案例》在现代软件开发中,面向切面编程(AOP)是一种非常重要的技术,能够有效实现日志记录、安全控制、性能监控等横切关注点的分离,在传统的AOP实现中,切... 目录引言一、AOP 概述1.1 什么是 AOP1.2 AOP 的典型应用场景1.3 为什么需要动态插