游览计划 题解

news/2024/10/6 13:09:39/文章来源:https://www.cnblogs.com/zphh/p/18449002

题意

给定一张无向图,选取四个点 \(a \ne b \ne c \ne d\),求 \(f(a, b) + f(b, c) + f(c, d)\) 的最大值,其中 \(f(u, v)\) 表示点 \(u\) 到点 \(v\) 的最短路长度。

题解

如果顺着枚举四个点 \(a\)\(b\)\(c\)\(d\),是一个 \(n^4\) 的复杂度,显然过不了。

但是我们发现如果确定了 \(a\)\(b\)\(c\),那么 \(d\) 可以贪心找到离 \(c\) 最远的且不为 \(a\)\(b\) 的点。

复杂度降到了 \(n^3\),但还是过不了(赛时就分析到了这里就没往下想了)。

\(b\) 点也同理,\(b\) 点确定了,找最远的 \(a\) 即可。

我们维护一个 \(g(u)\),表示离 \(u\) 点最远的点即可。

但是不对,题目要求 \(a \ne b \ne c \ne d\),倘若 \(g(b) = c\),就无法满足条件,就成功地挂了。

所以我们需要维护一个 \(g(u, 0 \sim 2)\),表示离 \(u\) 最远、次远、次次远的点。

此时就很好解决了。

说说前面的最短路。

如果直接跑弗洛伊德会爆掉,但是由于边权为 \(1\),所以可以跑 \(n\) 次 bfs,时间复杂度从 \(n^3\) 降到了 \(nm\)(赛时这个我也没想到)。

时间复杂度:\(\mathcal O(nm + n^2)\)

namespace zqh {
const int N = 4005;int n, m, dis[N][N];
int far[N][3];
vector<int> g[N];il void bfs(int s) { // 求以 s 为起点的最短路queue<int> q;q.push(s);dis[s][s] = 0;while (q.size()) {int u = q.front();q.pop();for (int v : g[u]) {if (!dis[s][v]) {dis[s][v] = dis[s][u] + 1;q.push(v);}}}
}il void init() {cin >> n >> m;for (rg int i = 1; i <= m; i++) {int x, y;cin >> x >> y;g[x].push_back(y);g[y].push_back(x);}
}il void solve() {for (rg int i = 1; i <= n; i++) {bfs(i);dis[i][0] = -1;}for (rg int i = 1; i <= n; i++) { // far 就是上文的 gfor (rg int j = 1; j <= n; j++) {// cout << dis[i][j] << " ";if (dis[i][j] == 0x3f3f3f3f3f3f3f3f || i == j)continue;if (dis[i][far[i][2]] < dis[i][j]) { // 一个判前三大的好方法far[i][2] = j;}if (dis[i][far[i][1]] < dis[i][far[i][2]]) {swap(far[i][1], far[i][2]);}if (dis[i][far[i][0]] < dis[i][far[i][1]]) {swap(far[i][0], far[i][1]);}}// cout << endl;}// for (int i = 1; i <= n; i++) {//     cout << far[i][0] << " " << far[i][1] << " " << far[i][2] << endl;// }int ans = 0;for (rg int b = 1; b <= n; b++) { for (rg int c = b + 1; c <= n; c++) { // 枚举 b、cfor (rg int i = 0; i < 3; i++) {for (rg int j = 0; j < 3; j++) { // 枚举第几大int a = far[b][i], d = far[c][j];if (a != b && a != c && a != d && b != c && b != d &&c != d) { // 不能重复if (dis[a][b] + dis[b][c] + dis[c][d] > ans) {ans = max(ans, dis[a][b] + dis[b][c] + dis[c][d]); // 统计答案// cout << a << " " << b << " " << c << " " << d//      << endl;}}}}}}cout << ans;
}void main() {init();solve();
}
}  // namespace zqh

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

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

相关文章

vue3 computed

computed 的作用就是监测变量是否发生改变。如果变量发生了改变,那么computed定义的方法就会执行。 在vue3中computed新增get 和set方法。分别对应修改和设置值

洪海洋的博客自我介绍

欢迎来到洪海洋的博客 我个人的基本信息 1.你的姓名? 如标题所示,洪海洋。英文名则是OCEAN,“海洋”,这一般也会作为我的网名。 2.为什么起这样的名字? emmm...五行缺水 3.描述一下自己? 多元、社恐、耐心 4.为什么这样描述自己? 对于我来说,多元包含很多个领域,比如我…

树上深度和问题 - 换根DP

问题引出: 给出 \(n\) 个点的树,求出分别以不同的 \(i\) 为根时,所有结点深度的和,根节点的深度为 \(0\)。 首先我们有个自然的暴力思路, 也就是以每个节点为根节点做一遍 \(dfs\) 这样的复杂度是 \(O(n^2)\) 级别的, 所以要进行优化 看下图:我们首先假设每个节点具有点权, …

珂朵莉树(ODT)

前言 主要是一种暴力思想。。。 本文来自 wiki 与洛谷题解的整合。 应用 主要是应付随机数据(区间操作) 实现 有几个核心操作。 set实现方法 定义 struct node {intt l,r;//intt:long longmutable intt v;node(const intt &ll,const intt &rr,const intt &vv) : …

高效开发Maven架构设计图解/掌握项目工程自动化技巧(精通篇一)

Maven是一个项目管理和构建自动化工具,主要服务于基于Java的项目。它使用一个名为POM(Project Object Model)的XML文件来描述项目的构建过程、依赖、插件等信息。肖哥弹架构 跟大家“弹弹” 高并发锁, 关注公号回复 mvcc 获得手写数据库事务代码 欢迎 点赞,关注,评论。…

20222406 2024-2025-1 《网络与系统攻防技术》实验一实验报告

20222406 2024-2025-1 《网络与系统攻防技术》实验一实验报告 1.实验内容 本周深入学习了缓冲区溢出相关内容,收获颇丰。 一、理论知识学习学习了缓冲区溢出的基本知识,包括汇编语言,了解了常见的指令如mov(数据传送)、push(压栈)、pop(出栈)、call(调用函数)等的基…

Markdown格式学习

Markdown格式学习 掌握内容 标题:使用 # 来表示不同级别的标题,如 # 表示一级标题,## 表示二级标题 有序列表:使用数字加点来创建,如 1., 2.。 链接:使用 链接描述。 强调:使用 * 或 _ 来表示斜体(两边各一个),使用两个 ** 或 __ 来表示粗体。 表格:使用 | 和 - 来创…

免费在线音频转字幕网站 All In One

免费在线音频转字幕网站 All In One 利用 AI 将语音转成文本 free online Speech to Text websites免费在线音频转字幕网站 All In One利用 AI 将语音转成文本free online Speech to Text websites 每天三次免费https://turboscribe.ai/zh-CN/dashboard demos(🐞 反爬虫测试!…

英璞来(imprai)LLMs企业级智能助理:让大语言模型应用触手可及

在这个信息爆炸的时代,人工智能和大数据技术正在改变我们的生活。而随着大语言模型的广泛应用,如何快速、高效地将这些模型集成到各种应用场景中,成为了一个亟待面对的问题。今天,我们要向您介绍一款名为英璞来(imprai)的开箱即用的企业级智能助理平台,它能够让您轻松获…

服贸会上的科技闪耀之星:璞华易研PLM系统引领产品研发潮流

2024年中国国际服务贸易交易会(以下简称为“服贸会”)于9月在北京盛大开幕,再次汇聚全球目光,共襄智慧服务的盛宴。本届服贸会秉承“全球服务、互惠共享”的核心理念,聚焦“共享智慧服务,共促开放发展”,为参会者搭建了一个集展览展示、洽谈推介、成果发布于一体的多元化…

璞华科技珠海采筑:通过SRM系统实现采购管理一体化和精细化

SRM供应商关系管理应该怎么做?如何实现采购管理一体化?近日,聚焦建材采购交易领域的服务商珠海采筑和SRM系统提供商璞华科技通过合作给出了一个现实的回答:通过SRM系统,聚焦使用者视角,以数据为主线,实现采购管理的一体化和精细化。 珠海采筑电子商务有限公司 珠海采筑电…