CSP2025 - 提高组生成树和笛卡尔树专题

news/2025/2/5 14:45:49/文章来源:https://www.cnblogs.com/laoshan-plus/p/18699435

CSP2025 - 提高组生成树和笛卡尔树专题

P3639 [APIO2013] 道路费用

首先发现旧边和新边的限制我们非常不好处理,但是新边只有 \(20\) 条,所以最小生成树的形态变化应该不大。换句话说,有很多的旧边是一直在最小生成树上的。考虑优先找出这些边。具体而言,我们把所有的新边全部加入图中,然后跑 Kruskal。这一遍找出的旧边就是永远位于最小生成树上的边。

把这些旧边的连通块缩成一个点。经过这一步就只剩下 \(k+1\) 个点了,数据范围显著缩小。

现在剩下的旧边数量虽然规模还是 \(O(m)\) 的,但因为只剩下 \(k+1\) 个点,所以很多边都是无用的,我们只需保留边权最小的 \(k\) 条旧边。

做完了这些工作,我们就可以 \(2^{20}\) 枚举最小生成树中有哪些新边了。至于新边的边权怎么确定,我们考虑到:刚才处理出的 \(k\)不一定在最小生成树中的旧边,每一条实际上都提供了一条限制。对于一条不一定在最小生成树中的旧边 \((u,v,w)\),实际上限制了树上 \(u\)\(v\) 的路径的边权最大值不能超过 \(w\)。而边权最大值这个东西可以用 LCA 处理,因为只有 \(k+1\) 个点,所以暴跳父亲就可以处理。

最终对于在最小生成树中的新边计算贡献即可。

P8626 [蓝桥杯 2015 省 A] 灾后重建

\(50000\) 的数据范围,\(5~\rm s\) 的时间限制,非常根号分治。

题目中又一次出现了边权最大值这个东西,根据经验直接在最小生成树上处理。所以这题的第一步就是 Kruskal,第二步就是倍增处理 LCA 和边权最大值。接下来考虑怎么快速处理询问。

然后就是本题的精粹了:

  • \(K_i>\sqrt N\),说明参与询问的点只有 \(\sqrt N\) 个。此时我们直接建立虚树,对于虚树上的每一条边找出这条边连接的两点在原树上的边权最大值即可。
  • \(K_i\le\sqrt N\),此时的 \(K\) 的种类数就被我们过滤成了 \(\sqrt N\) 个,把它们离线下来按照 \(K\) 排序,对于每一个 \(K\) 的所有余数都计算出两两之间的边权最大值,放入线段树中。查询的时候在线段树中查询区间最大值即可。注意为了保证余数相等的数在线段树中连续,需要重新给定编号,这一步的细节特别需要注意

最后的复杂度就是 \(O(N\sqrt N\log N)\)

CF1580B Mathematics Curriculum

把 “包含 \(x\) 的子串最大值个数为 \(m\)” 这个条件转化为 \([1,x)\) 中的前缀最大值加上 \((x,n]\) 中的后缀最大值数量为 \(m\),发现这个东西就是笛卡尔树上 \(\boldsymbol x\) 的层数。于是问题转化为,有多少形态不同的笛卡尔树满足层数为 \(m\) 的节点数等于 \(k\)

然后就可以 DP 了。设 \(f_{n,m,k}\) 表示笛卡尔树大小为 \(n\)、层数为 \(m\) 的点有 \(k\) 个的方案数。转移的时候枚举笛卡尔树一个儿子的大小和里面深度为 \(m\) 的个数,有:

\[f_{n,m,k}=\sum_{i=0}^{n-1}\sum_{j=0}^{\min(k,i)}f_{i,m-1,j}\times f_{n-i-1,m-1,k-j}\times\binom{n-1}i \]

但这样是过不去的,\(100\) 想要过 \(O(n^5)\) 哪有那么容易。重点优化转移边界,发现 \(j\) 这个东西不仅有上界还有下界,下界就是 \(i+k+1-n\)。然后记搜就把这题草过去了。

P10173 「OICon-02」maxiMINImax

和笛卡尔树没有什么关系。看到三个区间应该想到枚举中间那个,看到统计子串个数应该想到对每个点单独计算贡献。然后就可以单调栈求出每个点向左/右最远到哪能使其成为区间最大/最小值,然后就可以计算出 \(c_i,d_i\) 分别代表第 \(i\) 个点作为区间最小/最大值时的方案数。

所以此时我们从小到大地枚举每一个数作为中间区间的最小值,记为 \(\min_2\),这个数所带来的贡献就是

\[\sum c_{\min_2}d_{\max_1}d_{\max_3}(\min\nolimits_2-\max\nolimits_1)(\min\nolimits_2-\max\nolimits_3)~, \]

把式子拆开,发现只需用树状数组维护 \(\sum d_{\max_1}\)\(\sum d_{\max_3}\)\(\sum d_{\max_1}\max_1\)\(\sum d_{\max_3}\max_3\) 即可计算。

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

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

相关文章

使用ollama运行deepseek-r1模型

Ollama是一个功能强大的本地大语言模型的运行框架,用户可以非常简单地运行使用各种LLM。最最主要的是它完全免费,本地可以离线运行; 1. 最简单的安装:curl https://ollama.ai/install.sh | sh 2.也可以访问ollam.com直接点击下载安装3. 安装完成之后,ollama list一下可以看…

【python应用】Python也能使用动态链接库

前言 动态链接库(DLL)想必大家都不陌生了吧,C/C++编程经常会用到,那么,它跟我们的Python有什么关系?要说关系恐怕也就是Python是用C写的了,不过,还有一点更重要的关系,那就是Python可以调用C函数,这一点,在Pywin32中有所体现。下面我们就来详细了解下到底Python使用动…

ERP+PLM+MDM

ERP+PLM+MDM 新一代汽车数字工厂PLM+PLM+MDM集成解决方案专为汽车整车行业设计,通过整合企业业务流程和优化关键数据管理,实现了设计制造一体化。该方案以业务流程为导向,围绕整车项目研发、快速变型设计、产品配置和装配工艺设计四大业务场景,提供全面的数据管理和流程控制…

AI应用示例:用AI通过单张面部照片预测您的职业与受教育程度

AI 生成的图像 | Flux Labs AI 制作想象一下,你走进一场面试,还没开口,AI 面试官就已经根据你的脸对你做出评估。这是不是 “以貌取人 2.0”?这算是歧视吗?还是 AI 正在推动一种新的 “面相主义”(face-ism)? 最近,来自多所大学的研究人员进行了一项研究,他们声称 AI…

电脑本地部署deepseek教程

Ollama:本地大模型运行指南奇舞精选2024-04-2814,445阅读11分钟关注 智能总结 复制 重新生成 这篇文章主要介绍了本地大模型运行框架 Ollama。包括其简介、安装方法(下载安装及大模型下载)、终端对话(如显示帮助、模型信息等命令)、API 调用(generate 和 chat 两…

可能是对春节假期的一些总结

写在前面2603 字 | 总结 | 经历 | 思考 | 感触未经允许,禁止转载。 正文「我一直都应该知道,听到别人说出她的名字,我还是会心里一跳。」过年与我当初预计的完全不同。我当初的计划,春节七八天,写很多很多文章,极速推进今年年度计划的写作一项。为此还专门订阅了一个月的…

搜狗录音笔c1折腾

1.买的pdd厂家帮我整好了大部分(应该刷过固件) 2.遇到的问题就是c to c的线...它没有协商,得插电脑usb-a口上才能识别到 3.厂家提供的搜狗录音笔助手这个软件是有点小处理的不是原软件(指解锁登录,其他的没看出问题,至少软件没报毒)

task3

任务二:Smiling-Weeping-zhr/Travel-assistant 自建项目链接,有关大模型关于大模型解答旅游相关

1.4 条件分支和循环机制

程序的流程分为顺序执行、条件分支和循环三种 顺序执行是按照地址内容的顺序执行指令。 条件分支是根据条件执行任意地址的指令。 循环是指重复执行同一地址的指令。 顺序执行每执行一个指令程序计数器的值自动加1条件分支和循环中使用的跳转指令,会参照当前执行的运算结果来判…

vue3使用flv.js播放flv直播流

目前有个需求是:管理直播机有一个列表需要查看每个直播机的实时内容,所以需要在后台加这个功能。 效果:我用ffmpeg模拟推流: 如何用ffmpeg模拟推流请看我上一篇文章 网页: 如上是可以正确再网页端拉流,这个功能费了一天的时间,在这里免费分享出来。 首先安装flv.js(用n…

DeepSeep本地部署

1、浏览器搜索引擎更改 2、搜索:Ollama操作下载: 也可直接进入下载路径:https://ollama.com/download/windows ollama run deepseek-r1 本文来自博客园,作者:他还在坚持嘛,转载请注明原文链接:他还在坚持嘛 https://www.cnblogs.com/brf-test/p/18699050