贪心做题记录-2

news/2025/11/23 20:03:22/文章来源:https://www.cnblogs.com/DycBlog/p/19261374

贪心做题记录-2

CF1477D. Nezzar and Hidden Permutations

若一个点的度数为 \(n-1\),则其在 \(p,q\) 中的位置定然相同,因此可以先将这个点删去,缩减为子问题,直到剩下 \(n'\) 个点且所有点的度数都小于 \(n'-1\)。结合这个性质考虑图 \(G\) 的补图 \(K_{n'}-G\),此时补图中的所有连通块大小都 \(\ge 2\)

发现如果补图是菊花的话一定可以构造出一个各个位置都不相同的解:根节点在 \(p\) 中放置 \(1\)\(q\) 中放置 \(n\),叶子节点在 \(p\) 中放置 \(2,3,\cdots,n\),在 \(q\) 中放置 \(1,2,\cdots,n-1\)。由于这个构造只有根节点和叶子节点的大小关系不一致,但根节点和叶子节点在补图中有边,说明其在原图中无边,大小关系不会影响答案。

事实上,任何一棵树都可以划分成若干个 \(\ge 2\) 的菊花,参照下面的过程即可给出一组合法解:

从根节点开始递归枚举每个点 \(u\),若其目前不属于任何一个菊花,考虑以下过程:

  1. 若和其相邻的点中存在点不属于任何一个菊花,将 \(u\) 作为根,和 \(u\) 相连的不属于任何一个菊花的点作为叶子构造一个菊花。
  2. 否则,随便挑一个点 \(v\)。若 \(v\) 是其所属菊花的根,直接将 \(u\) 加入 \(v\) 所属的菊花即可。否则若 \(v\) 所属的菊花的大小 \(> 2\),将 \(v\) 移出原来的菊花,和 \(u\) 一起作为一个菊花即可,根是谁都可以;否则,将 \(v\) 置为其所属菊花的根节点,将 \(u\) 加入 \(v\) 所属的菊花即可。

由于上述过程总是产生一个合法菊花,且不会使任何一个合法菊花变得不合法,因此可以给出一组合法解。

现在对于每一个菊花都可以在内部给出一个构造,而对于菊花之间的边,只需要菊花间的大小关系始终相同,因此让各菊花的值域连续即可满足条件。

最后的问题是如何找出补图的一个生成树森林。可以将当前在图中还未加入生成树且不和自己连边的点视作自己在生成树上的儿子,然后递归解决问题。枚举到一个点不将其加入生成树森林最多发生 \(m\) 次,用 set 维护当前的未加入生成树的点即可。复杂度瓶颈在这里的 \(O(n\log n)\)

CF1290D. Coffee Varieties (hard version)

先考虑如何统计答案,不难想到将 \(i\)\([1,i-1]\) 中的所有数比较,如果有数字相同,那么这个数不计入贡献。显然只会在所有数字第一次出现时统计贡献,答案自然正确。然而在不加任何优化的前提下,查询的次数是 \(O(n^2)\) 的。

考虑这个做法没有利用到 \(k\),不难想到如果对 \(k\) 分块,在将某个块加入队列的过程中,自然可以知道每个点在块内的前缀是否出现,现在只需要考虑块间的查询。然而因为每查询一个数就会从队列中弹出一个数,因此有效查询位数只有 \(1\) 次。考虑若对 \(w\) 分块,有效查询位数就是 \(k-w+1\),不妨让两者平衡,即令 \(w=\frac{k}{2}\),此时有效查询次数足够查询一个块中的所有元素是否在另一个块中出现。于是可以枚举 \(i,j(i<j)\),对于每两个块互相查询一次。若分成 \(m\) 块,查询次数是 \(\frac{km(m-1)}{2}\) 左右,清空次数是 \(\frac{m(m-1)}{2}\)。代入 \(m=\frac{2n}{k}\) 可以得到查询次数是 \(\frac{2n^2}{k}\),清空次数是 \(\frac{2n^2}{k^2}\),支持通过 easy version。

考虑其实每次清空并不优,因为这个信息也可以用来查询后面的块,即枚举完 \(i,j\) 后,可以继续选择一个块 \(k(j<k)\) 获知 \(j,k\) 之间的贡献。即使获得的信息是 \(i\) 提供的,由于 \(i<j<k\),因此这个信息也是有效的。这样除了清空后的第一次查询,每次查询可以省去约 \(\frac{k}{2}\) 的操作。一个容易想到的划分方法是枚举间距 \(L\),每隔 \(L\) 个块查询一次,这样总共有约 \(\frac{m(m-1)}{4}\) 条查询链。查询次数是 \(\frac{km(m-1)}{4}+\frac{km(m-1)}{8}\),清空次数是 \(\frac{m(m-1)}{4}\)。同理代入得查询次数为 \(\frac{3n^2}{k}\),清空次数为 \(\frac{n^2}{k^2}\),可以通过这道题。

LG8425. [JOI Open 2022] 长颈鹿 / Giraffes

对于区间 \([l,r]\) 考虑其最小值 \(L\) 和最大值 \(R\) 的位置:若 \(L,R\) 均不出现在 \(l,r\) 上,那么这两个数分别满足两个条件,因此区间 \([l,r]\) 的观感是差的;否则,区间 \([l,r]\) 的观感是好的。这意味着对于任何区间,其值域的最小值和最大值至少存在一个位于端点处。

对这个内容 dp,即找到和原排列 \(p\) 相差位置最少的符合条件的排列 \(q\)。考虑如何生成一个 \(q\):每次从剩余数字中选择最大值或最小值填到剩余位置的最前面或最后面。于是可以设 \(f(l,r,x)\) 表示当前还没有填 \([l,r]\) 上的数,可以填的数字的最大值为 \(x\) 时和原排列不同位置的最小值,枚举 \(4\) 种情况转移即可,复杂度是 \(O(n^3)\) 的。

考虑将排列视作点 \((i,p_i)\) 转到平面上。在刚才的构造过程中,每确定一个位置值域范围就会减少 \(1\),并且下标和值域的范围始终连续,可以考虑用矩形来表示,并且可以发现所有的矩形都是正方形。继续发现性质,可以看出一个合法排列对应的 \(n\) 个正方形互相包含,并且 \(p_i=q_i\) 当且仅当 \((i,p_i)\) 出现在 \(q_i\) 对应的正方形的顶点上。因此,为了让相同的位置最多,就要让从原序列保留下来的相互包含的正方形最多。因此,转设 \(f(i,o,l)\) 表示以 \(i\) 为顶点的边长为 \(l\) 的第 \(o\) 种正方形最多能在里面保留多少相互包含的正方形,共有四种正方形分别代表 \(i\) 是正方形的左下角、右下角、右上角、左上角,枚举从哪个点转移来可以做到 \(O(n^3)\)

此时还没有用到排列随机生成的性质。事实上,在随机生成的情况下,可以证明最多保留 \(O(\sqrt{n})\) 个相互包含的正方形。考虑一个合法排列可以分成一个递增子序列和一个递减子序列,那么在原序列上保留的位置也可以分成一个递增子序列和一个递减子序列,所以在原序列上保留的位置数量不超过最长上升子序列和最长下降子序列的长度和。而一个经典的结论是随机排列的最长上升子序列的长度是 \(O(\sqrt{n})\) 的,于是保留的正方形数量也是 \(O(\sqrt{n})\) 的。这启发我们交换定义域和值域,设 \(f(i,o,k)\) 表示以 \(i\) 为顶点的第 \(o\) 种正方形若想要包含 \(k\) 个相互包含的正方形所需的最小边长。依然可以通过枚举转移点做到 \(O(n^2\sqrt{n})\)。但这个做法常数很大,因此无法通过。

考虑快速求解转移。问题相当于有 \(O(n)\) 个正方形,以某个点为顶点的第 \(o\) 种正方形包含至少一个正方形的最小边长。以求解以给定点 \((s,t)\) 为左下角的正方形的最小边长为例,考虑一个给定正方形的左下角 \((x,y)(x\ge s,y\ge t)\),若这个正方形的边长为 \(l\),那么想要覆盖这个正方形的所需边长为 \(\max(x-s,y-t)+l\)。这就是一个二维偏序问题,考虑对 \(\max\) 中的内容分类讨论,将一个正方形拆成两个三角形,然后斜着扫描线维护后缀最小值,单次转移可以做到 \(O(\log n)\)。于是整体复杂度是 \(O(n\sqrt{n}\log n)\),可以通过。

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

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

相关文章

机器人世界杯物流联赛技术解析

本文深入探讨机器人世界杯物流联赛的技术细节,包括自主移动机器人导航、多机器人协作规划、实时执行监控与重规划系统,以及智能工厂环境下的生产物流挑战,展现了现代机器人系统的复杂技术架构。机器人世界杯物流联赛…

fcitx5要一统江湖了

为了面向未来,又装上fcitx5细细地品了一下。转换正确率很高。 于是apt source fcitx5-pinyin看了下,发现两个2012年的文件:1.4M 2012年12月 2日 py_stroke.mb359K 2012年11月25日 py_table.mb用这两个文件就能达到如…

2025 年上海金蝶软件定制开发代理商推荐榜出炉

🥇 推荐一:上海宝蝶信息技术有限公司 (金蝶铂金级定制开发专家)推荐指数:★★★★★ | 口碑评分:10分 (一)上海宝蝶信息科技有限公司品牌介绍上海宝蝶信息技术有限公司成立于 2016 年,是金蝶集团在上海地区授权…

【开发者导航】全自动 AI 视频创作与发布工具:LuoGen-agent - 教程

【开发者导航】全自动 AI 视频创作与发布工具:LuoGen-agent - 教程2025-11-23 19:54 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !…

2025-09-10-Wed-T-AI基础知识

1 2 MCP What is the Model Context Protocol (MCP)? - Model Context Protocol 2.1 MCP能干什么 举例: 开发部署 开发者通过自然语言指令”部署新版本到测试环境“,触发MCP链式调用GitLab API(代码合并),Jenkin…

20251123-Port3 攻击事件分析:签名验证绕过+跨链增发代币

20251123,攻击者利用 CATERC20 合约中签名验证过程中没有检查非零地址签名的漏洞,调用 registerChain 函数设置了其他链的代币合约。使得跨链代币增发,抛售代币进行获利。 Hacker:https://bscscan.com/txs?a=0xb1…

JAX 核心特性详解:纯函数、JIT 编译、自动微分等十大必知概念

JAX 是 Google 和 NVIDIA 联合开发的高性能数值计算库,这两年 JAX 生态快速发展,周边工具链也日益完善了。如果你用过 NumPy 或 PyTorch,但还没接触过 JAX,这篇文章能帮助你快速上手。 围绕 JAX 已经涌现出一批好用…

java linux 进程

在 Linux 系统中,Java 进程的管理通常涉及以下几个方面:一、Java 进程的查看1. 查看 Java 进程(使用 ps 或 top)ps -ef | grep java这个命令会列出所有运行中的 Java 进程,包括进程 ID(PID)、用户名、是否为 Ja…

截图工具

faststone capture工具可以进行滚动截屏使用教程https://www.faststonecapture.cn/article/1004.html

linux 下定义常用路径环境变量

export FW_PATH="$HOME/mydev/code/aosp13" cd $FW_PATH

人工智能之数据分析 numpy:第十二章 数据持久化

人工智能之数据分析 numpy:第十二章 数据持久化人工智能之数据分析 numpy 第十二章 数据持久化前言 NumPy 提供了多种数据持久化(Persistence) 方式,用于高效地保存和加载数组数据。根据数据规模、结构复杂度、跨平…

榨干黑五VPS的7个姿势:Web3玩家的资源优化实战指南

前言 在Web3时代,许多玩家购买VPS(Virtual Private Server,虚拟私人服务器)仅用于简单任务,如运行爬虫或代理工具,导致资源严重浪费。一台典型的4核8GB内存、120GB硬盘的VPS,CPU利用率常年低于10%,内存仅用1.5…

anchor

anchor(锚框)就是“RPN 在特征图上预先放好的一组固定大小、固定长宽比的矩形框模板”,用来**“捞”出可能包含物体的区域。 一句话理解:anchor ≠ 最终候选框,它只是“初始滑窗”,网络会在此基础上学出真正的框…

作为网易 UU 远程 macOS 版(内测版本 4.6.101)用户,我实测了这份完整指南 - 指南

作为网易 UU 远程 macOS 版(内测版本 4.6.101)用户,我实测了这份完整指南 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; fo…

2025 年上海最靠谱的金蝶代理商:聚焦官方授权与深度适配,这家最高级铂金伙伴值得选

随着企业数字化转型进入深水区,对管理软件的需求日益复杂。金蝶软件作为企业管理领域的领军品牌,其系统选型与实施质量,直接决定了数字化转型的成败。因此,选择一家具备金蝶官方最高授权、且拥有深厚行业实践经验的…

单克隆抗体在药物研发和治疗领域的应用前景

单克隆抗体 (mAb) 作为生物医药领域的战略制高点,已从实验室工具发展为全球医药市场的核心支柱。2023 年全球单抗药物市场规模达 2189.7 亿美元,预计 2025 年将突破 2200 亿美元,年复合增长率约 16%,中国市场增速更…

Jetson Orin Nano super -3 NVIDIA Jetson 平台的技术架构和NVIDIA JetPack

NVIDIA Jetson 平台的技术架构和NVIDIA JetPack 一、核心定义 NVIDIA Jetson 平台的技术架构:NVIDIA Jetson 平台的技术架构完整展示了从云端工具到边缘硬件的全栈技术生态​ NVIDIA Jet…

学习DA

Markdown学习 标题 井号+空格+标题内容(几个井号就是几级标题) 三级标题 字体 RIVER(粗体) RIVER(斜体) RIVER RIVER(删) 引用java我来了分割线图片超链接 [点击挑战到博客园](河流一定有钱 - 博客园) 列表A C…

2025 年上海金蝶软件代理商推荐榜:上海宝蝶信息科技有限公司全行业覆盖、金蝶最高级铂金伙伴

随着企业数字化转型进入深水区,小微企业对轻量化云服务的需求、中大型企业对全流程 ERP 系统的诉求持续攀升,金蝶软件作为国内企业管理软件领域的领军品牌,其代理商的选择成为企业数字化落地的关键一环。2025 年,市…

深入解析:数据结构初识,与算法复杂度

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