一道题

news/2025/2/11 18:39:55/文章来源:https://www.cnblogs.com/gold-spade/p/18710302

statement

给定长为 \(n\) 的数列 \(A_i,B_i\),求所有 \(n\) 排列 \(P_i\) 的权值最小值。\((2\le n \le10^6)\)

  • 排列权值 \(=\max\left\{\max \limits_{1 \le i \le n} \{A_{P_i}^2-B_{P_{(i \bmod n)+1}}^2\},0\right\}\)

solution

子任务 \(1\)\(n \le 10\),随心所欲的大暴力,阶乘复杂度转状压 dp,很典。

正解:求最大值最小,思维也许会被局限在二分上。然而,当发现难以 check 时,需跳出思维困境。

题面就是 \(n\) 个点,\(u \to v\) 这条边权为 \(A_u^2-B_v^2\),选择其中一些边,构成一个简单环包含所有点,这个简单环的最大权值最小。显然,刚好选择 \(n\) 条边。

不妨设 \(A_i\) 有序

只考虑构成 \(1\) 个环的必要条件:出入度均为 \(1\)。这时就是一个贪心。假设当前 \(A_i\) 匹配 \(B_{l_i}\),来找一个 \(l_i\) 的最佳排列顺序。把某种 \(l\) 的排列方式交换 \(l_{i+1},l_i\),那么若 \(B_{l_{i+1}} \le B_{l_i}\) 交换后一定不差,癔症。因而 \(A_1\) 就该匹配最小的 \(B_i\)\(A_2\) 匹配慈孝的,以此类推。

这样搞就轻松拿捏 \(77\) 分了。但方法本身是有巨大问题的,它不充分,因此你的答案会变小。上述算法结束后,会生成若干个环。假设现在的 \(l_i\) 是最优排序后的。从调整角度入手,有如下引理:

  1. 若存在点 \(l_i,l_{i+1}\)\(i,i+1\) 不在同一环内。断掉 \(i\)\(l_i\)\(i+1\)\(l_{i+1}\) 的边,连接 \(i\)\(l_{i+1}\)\(i+1\)\(l_i\) 的边,则一定可以使 \(l_i,l_{i+1}\)\(i, i+1\) 在同一个环内。

  2. 连接除 1. 以外的其他边一定不优。

引理 1 是显然的。引理 2 中,假设 \(j > i+1\)\(i\) 连接 \(l_j\),那么 \(j\) 连接 \(l_i\)。显然 \(j-1\) 连到 \(l_j\) 的边权更小,以此类推,这样直接连肯定不比一个一个的连接 \(i,i+1\)\(i+1, i+2\)\(\dots\)\(j-1,j\) 优秀。

于是我们想到冰茶集。将引理 1 中的边按边权排序,按顺序连接,不在同一环中的连,并贡献给答案,最终一定形成一个环。

所以……

code

#include <bits/stdc++.h>
#define PII pair<int,int>
#define FASTIO ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
#define rep(i, l, r) for (int i = l; i <= r; i++)
#define per(i, r, l) for (int i = r; i >= l; i--)
using namespace std;
typedef long long LL;
const int N = 1e6+5, mod = 32767;
struct edge {int u, v, w;
} ed[N];
int n, id1[N], id2[N], fa[N], a[N], b[N];
inline int get(int x) {return x == fa[x] ? x : (fa[x] = get(fa[x]));
}
inline bool merge(int x, int y) {x = get(x), y = get(y);if (x == y) return false;fa[y] = x;return true;
}
signed main() {FASTIO;int xx, yy, zz;cin >> n >> a[1] >> a[2] >> xx >> yy >> zz;rep(i, 3, n) a[i] = (xx*a[i-1]%mod+yy*a[i-2]%mod+zz)%mod;cin >> b[1] >> b[2] >> xx >> yy >> zz;rep(i, 3, n) b[i] = (xx*b[i-1]%mod+yy*b[i-2]%mod+zz)%mod;rep(i, 1, n) fa[i] = id1[i] = id2[i] = i;sort(id1+1, id1+n+1, [](const int& x, const int& y) { return a[x] < a[y]; });sort(id2+1, id2+n+1, [](const int& x, const int& y) { return b[x] < b[y]; });int ans = 0;rep(i, 1, n) {int x = id1[i], y = id2[i]; merge(id1[i],id2[i]);ans = max(ans, a[x]*a[x]-b[y]*b[y]);}rep(i, 1, n-1) {int x = id1[i+1], y = id2[i];ed[i] = {x, y, a[x]*a[x]-b[y]*b[y]};}sort(ed+1, ed+n, [](const edge& x, const edge& y) { return x.w < y.w; });rep(i, 1, n-1) if (merge(ed[i].u, ed[i].v)) ans = max(ans, ed[i].w);cout << ans;return 0;
}

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

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

相关文章

另辟新径实现 Blazor/MAUI 本机交互(一)

本系列由浅入深逐个文件解析工作原理 目录:WebViewNativeApi.cs NativeApi.cs MainPage.xaml.cs 实战 串口 小票机 蓝牙WebViewNativeApi.cs WebViewNativeApi.cs 文件中的代码实现了一个 NativeBridge 类,用于在 .NET MAUI 应用程序中的 WebView 和本地代码之间进行通信。以下…

AI 如何重塑劳动力市场:基于 Claude 数据的深度分析

前言 本文翻译自 Anthropic 今天发布的 The Anthropic Economic Index ,经济指数报告,这份报告基于 Claude 的数据对目前的 AI 使用情况做了汇总。 引言 在未来的几年里,人工智能系统将对人们的工作方式产生重大影响。因此,我们推出了 Anthropic Economic Index,这是一个旨…

Nacos Python SDK 强势来袭,动态管理大模型 Prompt!

Nacos 从 0.8.0 版本开始就一直参与 Python 生态建设,努力作为 Python 生态中分布式微服务发现和配置管理的解决方案一直往前演进。目前随着 AI 领域的发展,Nacos 社区的 Python 开发者用户越来越多,因此这次我们迭代了 Python 的 GA 稳定版本,对不少历史问题做了修复以及易…

踩坑记录-二分搜索的不同情况

二分搜索的不同情况 二分搜索可以用来查找满足条件的值,但是满足条件的值可能只有1个,也可能有多个。比如查找1的索引,对于【1,1,2,2】来说,就有2个。一般要求的就是:满足条件最大值/满足条件最小值。 二分搜索详细介绍可以参考:https://programmercarl.com/0704.二分…

《ESP32-S3使用指南—IDF版 V1.6》第五章 搭建开发环境

第五章 搭建开发环境 1)实验平台:正点原子DNESP32S3开发板 2)章节摘自【正点原子】ESP32-S3使用指南—IDF版 V1.6 3)购买链接:https://detail.tmall.com/item.htm?&id=768499342659 4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/esp32/AT…

内测之家介绍

内测之家:助力应用开发与迭代的专业平台内测之家是一款功能强大且全面的应用内测与管理平台,专为 iOS 和 Android 开发者打造,旨在为他们提供便捷高效、安全可靠的一站式服务。无论是从资源安全到传输安全,还是从数据保护到应用管理、统计分析,内测之家都展现出卓越的能力…

如何用好 AI 编码工具,让通义灵码帮你做更多工作

通义灵码,是阿里云与通义实验室联合打造的智能编码辅助工具,提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码优化、注释生成、代码解释、研发智能问答、异常报错排查等能力,提供代码智能生成、研发智能问答能力。通义灵码,是阿里云与通义实验室联合打造的智…

用EXPLAIN检查SQL是否有慢查询

先看下面两张图: 图一 图二 同样都是查询语句,图一的条件采用的是模糊匹配,产生了全表扫面(type:a…

【触想智能】工控一体机在机械臂上应用的四大优势

随着工业自动化的发展,机械臂已成为现代制造业中不可或缺的一部分。为了使机械臂能够高效、精确地执行各种任务,工控一体机的应用变得越来越广泛。触想工控一体机在机械臂上的应用工控一体机是一种集计算、控制和通信于一体的高性能工业计算机,它不仅具备强大的计算能力,还…

CTFShow-Web167:

CTFShow-Web167:.htaccess利用 <button type="button" class="layui-btn" id="upload" lay-data="{url: upload.php, accept: images,exts:jpg}"> 限制上传类型为jpg文件 题目提示httpd,并且404页面返回Apache/2.4.25 (Debian…

对极几何(Epipolar Geometry)总结

为什么stereo很有用? 当我们需要从单一视角恢复结构时,我们的信息来源有以下几种: \(\bullet\) 从标定架可以获取标定架的位置 / 姿态以及相机内参 K。 \(\bullet\) 从无穷远点和线,加上正交的线和平面等信息,可以获取场景的结构和相机内参 K 。 但是由于内在歧义性,从单…