数据备份 P3620 [APIO2007]题解

P3620 [APIO/CTSC2007] 数据备份 - 洛谷

已知办公楼都位于同一条街上。你决定给这些办公楼配对 (两个一组)。每一对办公楼可以通过在这两个建筑物之间铺设网络电缆使得它们可以互相备份。

然而,网络电缆的费用很高。当地电信公司仅能为你提供 K 条网络电缆,这意味着你仅能为 K 对办公楼 (或总计 2 K 个办公楼) 安排备份。任一个办公楼都属于唯一的配对组 (换句话说,这 2 K 个办公楼一定是相异的)。

此外,电信公司需按网络电缆的长度 (公里数) 收费。因而,你需要选择这 K 对办公楼使得电缆的总长度尽可能短。换句话说,你需要选择这 K 对办公楼,使得每一对办公楼之间的距离之和 (总距离) 尽可能小。

输入格式

输入文件的第一行包含整数 N 和 K,其中 N (1 ≤N ≤10⁵) 表示办公楼的数目,K (1 ≤K ≤ 表示可利用的网络电缆的数目。

接下来的 N 行每行仅包含一个整数 s (0 ≤s ≤10⁹),表示每个办公楼到大街起点处的距离。这些整数将按照从小到大的顺序依次出现。

输出格式

输出文件应当由一个正整数组成,给出将 2 K 个相异的办公楼连成 K 对所需的网络电缆的最小总长


正式题解!

一、分析性质:

  • 只能在楼的中间连电缆

证明:反正,假设对于四个顺序的楼 abcd,ad 间连电缆, 显然对全局不优;如果 ad 和 bc 间连线缆,也一定不优

二、涉及决策,先看看缩小问题规模:


缩小 n:缩小之后,问题解决难度没有降低,仍是在一定区间内选若干连线,反而每一段连多少线也都难以确定, 不可取


缩小 k:

i. 当 k = 1 时,问题得以求解,选择最小的间隙即可。
ii. 不好一步扩展到 k,先继续扩展到 k = 2,看看如何决策:

此时已经选了第 i 间隙:

  1. 一个显然的可能决策,选择除了 i-1ii+1 的最小的间隙 j

    很显然,需要 ij 不相邻,当两个最小间隙不相邻,实施这个决策。

  2. 如果两个最小间隙 ij 相邻,从头重新选择,即不选间隙 i,看看怎么选两个间隙保证最优:

    样例暗示选择第

    样例暗示选择第 i-1 个和第 i+1 个,或者选 i 和除去:

  3. 没有其他的可行决策

    证明:

  • 性质 1):如果两个最小间隙不相邻,不选他们俩肯定不优。

  • 性质 2):注意这个决策触发前提:两个最小间隙 ij 相邻,我们还不选 i 和其他的 较小间隙,即不选 i

    如果选择次小间隙

    如果选择次小间隙 j (挨着 i,设成 i-1),不选 i+1,显然可以通过把 j 换成 i,达到更优,所以如果想选择 i-1i+1,这两个要捆绑选择。

  • 性质 3) 易证。

iii. 继续扩展到 k = 3,仿照 k = 2,看看能不能使决策相同,便于递推:
  1. 新选一条和 ij 都不相邻的间隙 h (和 ii.1) 决策方法一样)

  2. ij 正好就隔 1,从头选择,并且选择中间的那个间隙 h 仿照 ii. 2) 选择 h-2hh+2

  3. 没有其他决策

    证明:

  1. 易证

  2. 决策之前,我们选择 ij,最优

    根据 上文证明,hh+2 捆绑选择,h-2h 捆绑选择,我们只需证对于 h-2hh+2 也和他们俩捆绑选择。

    类似于 ii. 的证明,如果不捆绑选择

    类似于 ii. 的证明,如果不捆绑选择 h+2,反而选择了另外一个 t,那么可以把 h-2h 换成 ij,更优。

iv. 扩展到 k = 4
  1. 新选一条和原来间隔都不相邻的间隙 h (和 ii.1) 决策方法一样)

  2. 在原来选择间隔的中间选择 v......, 范围缩放法实施完毕

三.代码实现:

  1. 决策 1 直接在堆里面找最小

  2. 决策 2,即抛弃中间,替换两边,在选择区间 i 时,在堆中 加入 \(a [i-1]+a [i+1]-a [i]\),实现替换

如果当前 k=3 ? 已然在 k=2 时候选择

\[p=a[i-1]+a[i+1]-a[i]
\]

现在想要换成;\(a [i-2]+a [i]+a [i+2]\),只需在 k=2 决策时压入

\[p'=a[i-2]+a[i+2]+a[i]-a[i-1]-a[i+1]=a[i-2]+a[i+2]-p
\]

这个方法保证了大问题和小问题的求解方法相同

豆包提供格式整理

P3620 数据备份 题解的更多相关文章

  1. 洛谷P1484 种树&洛谷P3620 [APIO/CTSC 2007]数据备份 题解(堆+贪心)

    洛谷P1484 种树&洛谷P3620 [APIO/CTSC 2007]数据备份 题解(堆+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/132 ...

  2. BZOJ1150:[APIO/CTSC2007]数据备份——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=1150 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的 ...

  3. 洛谷 [P3620] 数据备份

    贪心神题 首先我们发现一个显然的贪心策略,连接相邻两个写字楼总是更优. 所以本题就变成了数轴上一堆点,要选 k 个彼此不相邻的区间,使得区间长度最小 对于 10000 的数据来说,我们可以用 DP 解 ...

  4. 洛谷P3620 数据备份

    好吧,我一开始说这是个神级数据结构毒瘤题,后来改成神题了. 主要是贪心做法的巧妙转化: 首先发现选择的一对必须相邻,于是我们搞出差分. 然后考虑选取最小值时,最小值两侧的数要么同时选,要么都不选. 然 ...

  5. P3620 [APIO/CTSC 2007]数据备份

    P3620 [APIO/CTSC 2007]数据备份 题目描述 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味的,因此你想设计一个系统让不同 ...

  6. 洛谷 P3620 [APIO/CTSC 2007]数据备份 解题报告

    P3620 [APIO/CTSC 2007]数据备份 题目描述 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味的,因此你想设计一个系统让不同 ...

  7. 题解:[APIO/CTSC 2007]数据备份

    你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐在家中尽享计算机游戏的乐趣.已 ...

  8. 洛谷P3620 [APIO/CTSC 2007] 数据备份 [堆,贪心,差分]

    题目传送门 题目描述 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐在家中尽 ...

  9. P3620 [APIO/CTSC 2007]数据备份[优先队列+贪心]

    题目描述 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐在家中尽享计算机游戏 ...

  10. 数据备份[APIO/CTSC 2007]题解

    题目描述 你在一家IT公司为大型写字楼或办公楼的计算机数据做备份. 然而数据备份的工作是枯燥乏味的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐在家中尽享计算机游戏的乐趣. 已知办公楼 ...

随机推荐

  1. 基于SaaS纯BS架构的全院级PACS系统

           2014年曾经做过一版简单的Dicom Web Viewer,之前的Web版本由于技术和功能的极限性,仅能简单的运用于临床阅片和患者的电子胶片使用,无法普及到放射和超声等影像科室.影像科 ...

  2. IDEA设置之“代码提示不区分大小写”

    作用 代码提示不区分大小写 案例1 案例2

  3. Python Set | update()

    Python update() function in set adds elements from a set (passed as an argument) to the set. Syntax ...

  4. Vmware workstation安装部署微软SCCM服务系统

    VMware Workstation部署微软SCCM 2303完整操作指南 简介 sccm(System Center Configuration Manager),是微软系统中心配置管理器内部简称. ...

  5. dify+MCP多应用,构建灵活的AI应用生态系统

    一.概述 前面几篇文章写很多MCP应用,基本上一个dify工作流使用一个MCP应用. 那么一个dify工作流,同时使用多个MCP应用,是否可以呢?答案是可以的. 先来看一下效果图 说明: 这里使用了问 ...

  6. pta求符合给定条件的整数集 C语言

    题目如下 给定不超过6的正整数A,考虑从A开始的连续4个数字.请输出所有由它们组成的无重复数字的3位数. 输入格式: 输入在一行中给出A. 输出格式: 输出满足条件的的3位数,要求从小到大,每行6个整 ...

  7. 【异常总结】SeaTunnel集群脑裂配置优化方法

    集群配置 项目 描述 数量 3台 规格 阿里云ECS 16C64G Slot模式 静态50个 ST内存配置 -Xms32g -Xmx32g -XX:MaxMetaspaceSize=8g 异常问题 4 ...

  8. AD 横向移动-令牌模拟攻击

    本文通过 Google 翻译 Lateral Movement – Token Impersonation 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释补充. 导航 0 ...

  9. java 腾讯云、阿里云SMS短信工具类

    引入POM依赖 <!-- 腾讯云SMS SDK --> <dependency> <groupId>com.tencentcloudapi</groupId& ...

  10. 2024杭电钉耙2-1003 HDOJ7447 绝对不模拟的简单魔方

    欢迎您来我的网站看这篇题解! Problem 有一个魔方可能被拧了不超过三次,同时还弄丢了一个角块上的两个贴纸.现在把这两个贴纸贴回去,请问有没有贴错? 只可能拧侧面,不会拧中间层,且每次只能拧 \( ...