4 ACwing 274 Mobile Service 题解

news/2025/10/5 18:02:54/文章来源:https://www.cnblogs.com/michaele/p/19126808

Mobile Service

题面

一个公司有三个移动服务员,最初分别在位置 1,2,3 处。

如果某个位置(用一个整数表示)有一个请求,那么公司必须指派某名员工赶到那个地方去。

某一时刻只有一个员工能移动,且不允许在同样的位置出现两个员工。

从 p 到 q 移动一个员工,需要花费 c(p,q)。

这个函数不一定对称,但保证 c(p,p)=0。

给出 N 个请求,请求发生的位置分别为 p1∼pN。

公司必须按顺序依次满足所有请求,且过程中不能去其他额外的位置,目标是最小化公司花费,请你帮忙计算这个最小花费。

\(3 \le L \le 200\)

\(1 \le N \le 1000\)

题解

因为公司必须按顺序满足所有请求,所以我们可以按照这些请求划分阶段,设 \(f(i,p1,p2,p3)\) 表示处理完前 \(i\) 个请求,三个人分别在 \(p1,p2,p3\) 的最小代价

如果这样 \(dp\) ,那么状态数是 \(O(NL^3)\) 级别的,是不可接受的

仔细观察发现,这三个位置中一定有一个位置在第 \(i\) 个请求的位置,所以我们可以只记两个位置,\(f(i,p1,p2)\) 表示完成前 \(i\) 个请求,有一个人在 \(i\) 请求的位置,另外两个人在 \(p1,p2\) 的最小代价,这样的状态数就是 \(O(NL^2)\) 的,大概 4e7 ,可以接受

转移

\[f(i + 1,x,y) = f(i,x,y) + c(p_i,p_{i + 1}) \\ f(i + 1,x, p_i) = f(i, x, y) + c(y,p{i + 1}) \\ f(i + 1, p_i, y) = f(i, x, y) + c(x, p_{i + 1}) \]

这道题给我们两点启发:

  1. 求解线性dp问题,一般先确定阶段,若阶段不足以表示一个状态,则可以把所需的附加信息也作为状态的维度

    在转移时,若总是从一个阶段转移到下一个阶段(本题 i -> i+1),则没有必要关心附加信息维度的大小变化情况(本题 x,y 在转移前后大小不定),因为无后效性已由阶段保证

  2. 在确定 dp 状态时,要选择最小的能够覆盖整个状态空间的 “维度集合”

    若 dp 状态由多个维度构成,则应检查维度之间能否相互导出,排除冗余维度

code

#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>using namespace std;const int N = 1010, M = 210;int n, m;
int p[N], c[M][M];
int f[N][M][M];int main () {cin >> m >> n;for (int i = 1; i <= m; i++) {for (int j = 1; j <= m; j++) {cin >> c[i][j];}}for (int i = 1; i <= n; i++) {cin >> p[i];}memset (f, 0x3f, sizeof f);f[0][1][2] = 0;//自己的初始化要符合定义p[0] = 3;for (int i = 0; i <= n; i++) {for (int j = 1; j <= m; j++) {for (int k = 1; k <= m; k++) {int x = p[i];//注意判断不合法状态if (x == j || x == k || j == k) continue;//可以在合适的地方用变量简化代码int v = f[i][j][k];f[i + 1][j][k] = min (f[i + 1][j][k], v + c[x][p[i + 1]]);f[i + 1][j][x] = min (f[i + 1][j][x], v + c[k][p[i + 1]]);f[i + 1][x][k] = min (f[i + 1][x][k], v + c[j][p[i + 1]]);}}}int ans = 2e9;for (int i = 1; i <= m; i++) {for (int j = 1; j <= m; j++) {ans = min (ans, f[n][i][j]);}}cout << ans << endl;return 0;
}

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

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

相关文章

3 ACwing 273 Making the Grade 题解

ACwing 273 Making the Grade 题面 给定长度为 \(N\) 的序列 \(A\) ,构造一个长度为 \(N\) 的序列 \(B\) ,满足\(B\) 非严格单调 \(S = \sum_{i = 1}^N |A_i - B_i|\) 最小求出最小值 \(S\) \(1 \le N \le 2000\) \(…

1 ACwing 271 Mr

ACwing 271 Mr.Yangs Picture Permutations 题面 有 N 个学生合影,站成左端对齐的 k 排,每排分别有 N1,N2,…,Nk 个人。 (N1≥N2≥…≥Nk) 在合影时要求每一排从左到右身高递增,每一列从后到前身高也递增。 第 i 个…

2 ACwing 272 LCIS 最长公共上升子序列 题解

ACwing 272 LCIS 最长公共上升子序列 题面 对于两个数列 A 和 B,如果它们都包含一段位置不一定连续的数,且数值是严格递增的,那么称这一段数是两个数列的公共上升子序列 给定序列 \(A\) 和 \(B\) ,求 \(A\) 和 \(B…

实用指南:【MySQL】索引特性

实用指南:【MySQL】索引特性2025-10-05 17:59 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important…

镇江做网站公司漳州本地企业网站建设服务

作者推荐 【动态规划】【广度优先搜索】【状态压缩】847 访问所有节点的最短路径 本文涉及知识点 动态规划汇总 LeetCode879. 盈利计划 集团里有 n 名员工&#xff0c;他们可以完成各种各样的工作创造利润。 第 i 种工作会产生 profit[i] 的利润&#xff0c;它要求 group[…

用 Haxe 实现英文数字验证码识别

一、背景介绍 验证码(CAPTCHA)广泛用于区分人类与机器人,识别验证码通常依赖图像处理与 OCR 技术。本文将使用 Haxe 编程语言结合 Tesseract OCR 来实现英文数字验证码的识别。 Haxe 是一门跨平台语言,可以编译到多…

出题四

T1 T4tjT1 对于一次询问 \((x_1,y_1)\) 到 \((x_2,y_2)\),显然若两点不在同一个联通块中则无解。考虑在同一个联通块中的答案。 我们对整张图进行黑白染色。则有结论:若黑色/白色格点存在不同的数,则一定有解。 证明…

网站推广由什么样的人来做网站后台上次图片

本文作者&#xff1a;dpgisdpg前言参加一起Show桌面活动&#xff0c;顺便搞定之前未做的三星C49HG90DMC显示器开箱作业。搭建一套美如画的桌面&#xff0c;工程堪比“复仇者联盟”&#xff0c;不但需要足够的财力来买装备&#xff0c;还得会构图和互相搭配&#xff0c;打个比方…

网站设计公司深圳缩我短网址生成

1.开发背景 基于以上的章节&#xff0c;了解了 FreeRTOS 多线程间的信号量、队列的使用&#xff0c;已经满足了日常使用场景。其中&#xff0c;队列的使用规定了队伍成员的大小&#xff0c;然而现实使用场景下&#xff0c;很多数据不都是定长大小了&#xff0c;例如不定长的通讯…

二手图书交易网站建设辽宁移动惠生活app官方版

一、新建一个项目 首先&#xff0c;下载微信小程序开发工具&#xff0c;具体下载方式可以参考文章《微信小程序开发者工具下载》。 然后&#xff0c;注册小程序账号&#xff0c;具体注册方法&#xff0c;可以参考文章《微信小程序个人账号申请和配置详细教程》。 在得到了测…

ios移动网站开发详解高端室内设计公司

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很远。 &#x1f345;题目汇总(…

实用指南:B站视频下载器 v1.0.4|免登录下载1080P视频

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

台州椒江做网站wordpress禁止搜索页面

队列定义 先进者先出&#xff0c;这就是典型的“队列”。队列跟栈一样&#xff0c;也是一种操作受限的线性表数据结构。 顺序队列和链式队列 顺序队列&#xff1a;用数组实现的队列// 用数组实现的队列 public class ArrayQueue {// 数组&#xff1a;items&#xff0c;数组大…

7 2025 07 15 模拟赛题解

2025 07 15 模拟赛题解 T1 水题一道,全场切 题面 请你判断是否存在正整数 \(n\),使得 \(n^2\) 是 k 的倍数,且 \(n\) 不是 \(k\) 的倍数。如果存在,则输出最小的 \(n\)。不存在则输出 \(−1\)。 \(1 \le k \le 10 …

路桥区商用营销型网站建设wordpress如何查看并修改源代码

SpringCloud Alibaba 常用组件 一、基础结构搭建1.父工程创建2.子工程创建 二、Nacos&#xff1a;注册中心1.服务端搭建2.注册中心-客户端搭建3.注册中心-管理页面4.注册中心-常用配置5.注册中心-核心功能总结 三、Nacos注册中心集成Load Balancer 、OpenFeign1.Nacos客户端集成…

使用 OCaml 实现验证码识别

一、背景介绍 验证码(CAPTCHA)是一种常见的人机验证方式,通常由随机生成的字母或数字组成。为了自动化识别验证码,我们可以结合 OCR 引擎 Tesseract 与编程语言进行处理。本文使用 OCaml 实现验证码识别。 二、技术…

资料中台(大材料平台)之数据仓库建设

资料中台(大材料平台)之数据仓库建设pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mon…

私有云大数据部署:从开发到生产(Docker、K8s、HDFS/Flink on K8s) - 详解

私有云大数据部署:从开发到生产(Docker、K8s、HDFS/Flink on K8s) - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-fami…

建设网站注意什么wordpress表单数据前台显示图片

近年来&#xff0c;我国各类器材制造业已经开始向数字化生产转型&#xff0c;使得生产流程变得更加精准高效。通过应用智能设备、物联网和大数据分析等技术&#xff0c;企业可以更好地监控生产线上的运行和质量情况&#xff0c;及时发现和解决问题&#xff0c;从而提高生产效率…

本地搭建多个网站wordpress文章阅读量

检索销量表中销量最好的商品id和销量&#xff0c;下列SQL语句正确的是&#xff08;&#xff09; A. SELECT 商品id,销量 FROM 销量表 WHERE 销量MAX(销量) B. SELECT 商品id,MAX(销量) FROM 销量表 GROUP BY 销量 C. SELECT 商品id,MAX(销量) FROM 销量表 GROUP BY 商品id …