CH 5102Mobile Service题解

题目;

用动态规划很容易将完成任务量作为dp的阶段,通过指派服务员,从当前i-1个任务转移到i个任务;

我们可以用一个四维数组f[i][x][y][z]来表示在完成当前任务i时,三个机器人分别在x,y,z的位置;每次由其中一个机器人向目标位置转移;取min值;

但是算法规模一点都不乐观;

我们想到在完成当前任务i时,必定存在一个机器人位于p[i],即目标地;那么我们可以用f[i][x][y],即完成任务i时,另外两个机器人位于x,y的位置;

状态转移:

f[k][i][j]=min(f[k][i][j],f[k-1][i][j]+c[p[k-1]][p[k]]);//k为当前完成任务,c数组记录两者间的距离,p数组为目标到达地;
f[k][p[k-1]][j]=min(f[k][p[k-1]][j],f[k-1][i][j]+c[i][p[k]]);
f[k][i][p[k-1]]=min(f[k][i][p[k-1]],f[k-1][i][j]+c[j][p[k]]);

不妨设p0=3,那么初始值f[0][1][2]=0;目标为f[N][?][?];

题后反思:

求解线性dp要注意阶段的选择,注意附加信息要处理;

确定状态时要注意选择最小的能表示整个状态的维度空间;

阶段保证无后效性;

#include<bits/stdc++.h>
#define maxl 201
#define maxn 1001
using namespace std;
int f[1001][201][201],n,m,t,l,c[201][201],p[1001],ans;
template<typename T>inline void read(T &x)
{x=0;T f=1,ch=getchar();while(!isdigit(ch)) ch=getchar();if(ch=='-') f=-1, ch=getchar();while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48), ch=getchar();x*=f;
}
int main()
{read(t);while(t--) {int ans=2139062143;read(l);read(n);for(int i=1;i<=l;i++)for(int j=1;j<=l;j++)read(c[i][j]);memset(f,0x7f,sizeof(f));for(int i=1;i<=n;i++) {read(p[i]);}f[0][1][2]=c[3][p[1]];f[0][2][3]=c[1][p[1]];f[0][1][3]=c[2][p[1]];p[0]=3,f[0][1][2]=0;for(int k=1;k<=n;k++)for(int i=1;i<=l;i++)for(int j=1;j<=l;j++)if(i!=j&&p[k-1]!=j&&p[k-1]!=i){f[k][i][j]=min(f[k][i][j],f[k-1][i][j]+c[p[k-1]][p[k]]);f[k][p[k-1]][j]=min(f[k][p[k-1]][j],f[k-1][i][j]+c[i][p[k]]);f[k][i][p[k-1]]=min(f[k][i][p[k-1]],f[k-1][i][j]+c[j][p[k]]);}for(int i=1;i<=l;i++)for(int j=1;j<=l;j++) {if(i!=j&&i!=p[n]&&j!=p[n])ans=min(ans,f[n][i][j]);}printf("%d\n",ans);}return 0;
}
View Code

 

转载于:https://www.cnblogs.com/Tyouchie/p/10668379.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/462920.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Postgres主进程文件—postmaster.pid

postmaster内容 使用cat -n 命令可以查看postmaster.pid文件内容&#xff1a; ) 根据每一行进行解释&#xff0c;并给出对应的源代码说明 13795: 代表Postgres主进程的PID/usr/local/pgsql/data: 代表数据目录 1529235109&#xff1a; 代表postmaster文件的创建时间。 54…

Mysql 中 delete 与 left join 的问题

今天在一个程序后台删除一个东西的时候&#xff0c;却出现了这个问题&#xff1a; 在Google搜索了大约1小时候&#xff0c;终于找到了原因&#xff0c;解决起来非常简单&#xff1a; 增加一个T.*就搞定了。 故障分析&#xff1a;因为Insert、Update、Delete三个参数&#xff0c…

web架构设计经验分享

2019独角兽企业重金招聘Python工程师标准>>> 本人作为一位web工程师&#xff0c;着眼最多之处莫过于 性能与架构&#xff0c;本次幸得参与sd2.0大会&#xff0c;得以与同行广泛交流,于此二方面&#xff0c;有些心得&#xff0c;不敢独享&#xff0c;与众博友分享&am…

面向对象与软件工程—团队作业1

一、队伍介绍 队伍名称&#xff1a;逍遥此身君子意 队伍编号&#xff1a;1523933 参赛区域&#xff1a;西北赛区 参赛类别&#xff1a;小程序 指导老师&#xff1a;崔亚超 二、队伍成员信息 姓名&#xff1a;凌龙&#xff08;队长&#xff09; 学号&#xff1a;1700802085 班级…

PostgreSQL的核心架构

PostgreSQL的核心架构 注意 本人的博客都迁移到本人自己搭建的博客地址&#xff0c;通过此处可查看。 应用程序的访问接口 1. 访问接口总体图 进程及内存结构 1. 进程和内存结构图 主进程&#xff1a;Postmaster进程 辅助进程&#xff1a;SysLogger&#xff08;系统日志&a…

Linux 下的多线程下载工具

2019独角兽企业重金招聘Python工程师标准>>> 最先用的是 Axel&#xff08;http://axel.alioth.debian.org/&#xff09;&#xff0c;功能还可以&#xff0c;不过下载文件最多支持到 2GB&#xff0c;再大的文件就不能下载了&#xff0c;真变态&#xff01; aget&…

Launcher结构之home screen

今天刚刚知道如果你的Eclipse里面的工程指向服务器里面的源码记住千万不能在Eclipse里编译~~会在服务器上的源码里多处很多的中间件这样make不了只能清除那些中间件才能编译比较麻烦 Home screen可以说是一个手机的最重要应用&#xff0c;就像一个门户网站的首页&#xff0c;直…

分布式事务2PC、3PC模型

工作中使用最多的是本地事务&#xff0c;但是在对单一项目拆分为 SOA、微服务之后&#xff0c;就会牵扯出分布式事务场景 文章以分布式事务为主线展开说明&#xff0c;并且针对 2PC、3PC 算法进行详细的讲解&#xff0c;最后通过一个 Demo 来更深入掌握分布式事务&#xff0c;…

Python学习之路——装饰器

开放封闭原则&#xff1a;不改变调用方式与源代码上增加功能 1.不能修改被装饰对象(函数)的源代码&#xff08;封闭&#xff09; 2.不能更改被修饰对象(函数)的调用方式&#xff0c;且能达到增加功能的效果&#xff08;开放&#xff09;View Code装饰器 # 把要被装饰的函数作为…

通断时间面积法

背景&#xff1a; 来 源&#xff1a; 通断时间面积法是入选《供热计量技术规程》JGJ173-2009的一种热量分摊计量方法实现分户计量的一种计量方法。由清华大学建筑节能研究中心江亿院士提出。 简 称 ( 俗称 )&#xff1a;&#xff08;1&#xff09;“时温法”&#xff08;2&a…

win8 关于Adobe CS6系列软件Patch覆盖失败的问题(Photoshop CS6、Adobe Illustrator CS6、Adobe Fireworks CS6)...

我在Adobe文件夹下安装了Photoshop CS6和 Adobe Illustrator CS6&#xff0c;结果当我为AI覆盖Path文件后&#xff0c;我发现PS和AI全部都打不开了。反复覆盖还是没用。 不过很奇怪fireworks Cs6能用。FW我没有跟PS、AI装在同一个文件夹下。 我想难道是安装目录的问题&#xff…

《集体智慧编程》——第一章导读

为什么80%的码农都做不了架构师&#xff1f;>>> 什么是集体智慧 其含义是指&#xff1a;为了长早新的想法&#xff0c;而将一群人的行为、偏好或思想组合在一起。 完成这项工作的一种最为基础的方法&#xff0c;便是使用调查问卷或普查。从一大群人中搜集的答案可…

在Mono 2.8上部署ASP.NET MVC 2

Mono 2.8发布&#xff1a;C#4.0和更好的性能&#xff0c;我们知道Mono 2.8对ASP.NET MVC 2的完全支持&#xff0c;下面我们就来测试下在Mono 2.8上部署ASP.NET MVC 2应用程序。我的环境是Opensuse 11.3,通过以下命令部署好Mono 2.8的开发环境&#xff0c;之所以说是开发环境是同…

SRV记录注册不成功的可能的原因

1.1.1 SRV记录注册不成功的可能的原因 默认情况&#xff0c;安装完活动目录就会DNS中的SRV记录就注册成功了&#xff0c;如果您在域控制器上重启Netlogon服务&#xff0c;有可能还是不能注册SRV记录到DNS服务器上&#xff0c;以下是总结的需要检查的几点。 DNS区域名字是否正确…

ABAP很厉害是怎么一种体验?

知乎上偶然看到这个问题&#xff0c;觉得很有意思&#xff0c;我也来回答一发。 我本科和研究生学的是计算机专业&#xff0c;做项目用C/C&#xff0c;研究生三年项目的代码量大概在三到四万行左右。2007年大学毕业加入SAP成都研究院一直工作到现在&#xff0c;工作中用的最熟练…

当前读与快照读

概念 快照读 读取的是记录数据的可见版本&#xff08;可能是过期的数据&#xff09;&#xff0c;不用加锁 当前读 读取的是记录数据的最新版本&#xff0c;并且当前读返回的记录都会加上锁&#xff0c;保证其他事务不会再并发的修改这条记录   概念说的比较虚&#xff0c;也不…

随手笔记

import turtleturtle.bgcolor("red")turtle.fillcolor("yellow")turtle.color(yellow)turtle.speed(10)#主星turtle.begin_fill()turtle.up()turtle.goto(-600,220) turtle.down()for i in range (5): turtle.forward(150)turtle.right(144)turtle.end_…

详解AST抽象语法树

浅谈 AST 先来看一下把一个简单的函数转换成AST之后的样子。 // 简单函数 function square(n) {return n * n; }// 转换后的AST {type: "FunctionDeclaration",id: {type: "Identifier",name: "square"},params: [{type: "Identifier&quo…

rbac 权限分配, 基于formset实现,批量增加

这里需要两个知识点&#xff1a;  - formset  - 自动发现项目中的URL1. 什么是formset&#xff1a;  Django中 form组件 或 ModelForm组件&#xff0c;用于做一个表单的验证。 接收前端form表单中的数据&#xff0c;并进行验证。 并且还可以用于表单的渲染工作。 (就是直…

HDU 1247 Hat’s Words 字典树(Trie树)

HDU 1247 Hat’s Words 字典树(Trie树) 字典树的建立是应该都是一样的 下面是我的做法: 建立完后, 对每一个单词都进行find_string()判断是否符合, 分别对其分成两半, 用j分隔开(左闭右开); 分别find()其子串[0, j1), [j1, string_len), 当两子串都找到后,则输出此主串, 然后,b…