link

\(1-A-B-C-D-1\) 非常对称,我们断开来,分成 \(1-A-B\) 和 \(C-D-1\) 两部分,不难发现这两块是完全一致的。

首先对于每个景点 \(x\) 求出距离它不过 K、且距离 1 不超过 K 的所有点(即对于每个 \(B\),找到满足条件的 \(A\)),设这些点形成的集合为 \(S_{B}\)。由于边权为 1,对于每个 \(B\),我们只需要 bfs 即可 \(O(n+m)\) 得到 \(S_B\),整个过程的复杂度为 \(O(n(n+m))\)。

接下来,枚举 \(f_{B, C}\le K\) 的 \((B, C)\),然后暴力枚举 \(S_B,S_C\) 中的点,取最优且满足限制的组合即可。

上面求答案的复杂度是 \(O(n^4)\) 的,需要优化。

不难贪心想到我们只需要取 \(S_B, S_C\) 中最大的值,但是我们可能会从 \(S_B\) 取到 \(C\),\(S_C\) 取到 \(B\),或者从 \(S_B,S_C\) 中取到相同的值,我们需要规避掉这种情况。

考虑先满足从 \(S_B\) 取出来的值与 \(C\) 不同,那么我们顺便维护 \(S_B\) 中的次大值,若最大值与 \(C\) 相同就取次大值,否则取最大值即可。

然后考虑 \(S_C\) 取出的值满足条件,不难发现需要不同的值有 2 个(\(B\),\(S_B\) 取出的值),那么我们还要多维护次次大值,这样就可以保证最优解必然被我们枚举到了。

总复杂度 \(O(nm+n^2)\)。

code

[CSP-S 2022] 假期计划的更多相关文章

  1. hihoCoder#1698 : 假期计划 组合数

    题面:hihoCoder#1698 : 假期计划  组合数 题解: 题目要求是有序的排列,因此我们可以在一开始就乘上A!*B!然后在把这个序列划分成很多段. 这样的话由于乘了阶乘,所以所有排列我们都已 ...

  2. hihocoder #1698 假期计划 (排列组合+费马小定理+乘法逆元)

    Description 小Ho未来有一个为期N天的假期,他计划在假期中看A部电影,刷B道编程题.为了劳逸结合,他决定先拿出若干天看电影,再拿出若干天刷题,最后再留若干天看电影.(若干代指大于0)  每 ...

  3. CSP/S 2022 游寄

    初赛 HN 初赛分数线好像大 \(32\) 分左右,通过率极高!本人弱弱的拿了 \(60.5\) 分(周围的同学平均分 \(>80\).) Day -1 这一天晚上,我背了背 dijkstra, ...

  4. [No000016]为什么假期计划总是做不到?

  5. [USACO13DEC]假期计划(黄金)Vacation Planning (gold)

    题目翻译不好,这里给出一份 题目背景 Awson是某国际学校信竞组的一只大佬.由于他太大佬了,于是干脆放弃了考前最后的集训,开车(他可是老司机)去度假.离开学校前,他打开地图,打算做些规划. 题目描述 ...

  6. poj1936 假期计划第一水

    All in All Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 29651   Accepted: 12312 Desc ...

  7. 洛谷P3094 [USACO13DEC]假期计划Vacation Planning

    题目描述 有N(1 <= N <= 200)个农场,用1..N编号.航空公司计划在农场间建立航线.对于任意一条航线,选择农场1..K中的农场作为枢纽(1 <= K <= 100 ...

  8. CSP 记

    csp 开考建好文件夹编译器不能用搞了半天换了台电脑 四道题看完一个小时过去了 第一题不会正解写了部分分还有点悬 第二题写暴力因为一个小错误调了半天 看时间不多了已经有点慌了 也没想正解直接开了下一题 ...

  9. c++ imooc自学计划

    一.视频学习相关的课程列表: C++远征之起航篇http://www.imooc.com/learn/342: C++远征之离港篇http://www.imooc.com/learn/381: C++ ...

  10. CSP-S 游寄

    \(\text{reflection}\) 初赛. 本来以为上午要愉快地周测,但是伟大的虎哥让我们在四楼接着练习 然后就目睹了一个万能头+return 0编译 1min30sec 的奇迹 Win7 打 ...

随机推荐

  1. raw.githubusercontent.com 访问不了

    访问 Github 中的 raw 文件内容时会跳转到 raw.githubusercontent.com 这个域名 但是访问不了. 解决办法 Windows 在 C:\Windows\System32 ...

  2. 离线版nRF Connect for Desktop安装方法

    首先确保两台电脑都安装了nRF Connect for Desktop 先在一台能连网的电脑上安装自己想要的App 然后把APP拷贝到没有网的电脑上 从%USERPROFILE%\.nrfconnec ...

  3. 航天信息诺税通SAAS接口封装DLL

    项目中需要对接航天信息的诺税通接口开具电子发票,为此将功能封装到了DLL中,其他项目也可以方便的引用. Delphi调用示例: 有需要可以和我联系:yzqnet(微信)

  4. 比df更好用的命令!

    大家好,我是良许. 对于分析磁盘使用情况,有两个非常好用的命令:du 和 df .简单来说,这两个命令的作用是这样的: du 命令:它是英文单词 disk usage 的简写,主要用于查看文件与目录占 ...

  5. .net WorkFlow 流程介绍

    WikeFlow官网:www.wikesoft.com WikeFlow学习版演示地址:workflow.wikesoft.com WikeFlow学习版源代码下载:https://gitee.com ...

  6. 依赖注入的方式( 构造函数注入 、 set 方法注入 、注解注入)

    一.构造函数注入 二.set方式注入 三.集合注入

  7. [开源] Layouter(桌面助手)开源发布

    Layouter(桌面助手)是一款简洁.易用.美观的桌面整理软件,基于.net 6开发,支持Windows 7及以上操作系统.以 Apache-2.0 license 进行开源. 开源地址 https ...

  8. macOS 软件推荐

    五星推荐: ezip 解压压缩文件  https://ezip.awehunt.com/ (免费) microsoft To Do : https://todo.microsoft.com/tasks ...

  9. 【work记录:c++web聊天服务器】解决了聊天窗口的问题|修复了"没有区分好友或者群聊的聊天窗口"的bug|修复了"群聊消息undefined"的bug

    日期:2025.4.24 学习内容: 解决了聊天窗口的问题 修复了"没有区分好友或者群聊的聊天窗口"的bug 修复了"群聊消息undefined"的bug 个人 ...

  10. 松灵机器人scout mini 自主导航(5)——采用CMU团队导航策略

    重操旧业,最近实验室又需要测试无人车导航算法,因此又重新启动了松灵机器人scout mini小车 自主导航项目.通过调研,最终选择了前几年比较火的CMU团队的策略(https://www.cmu-ex ...