2025.10.15训练记录

news/2025/10/15 21:45:27/文章来源:https://www.cnblogs.com/docxjun/p/19144323

noip模拟赛,参加div2。

A

使人破防。
降智这种东西,到底是什么导致的呢?

记录一下思考过程吧:
首先发现,如果存在三棵树在 \(x\)\(y\)\(z\) 三维分别为最大值,且互不干扰。即存在最大的合法方案时,直接取这个即可。
对于大部分情况,并没有这么简单。那就是要对于这个取最大的操作略微进行修改。

可惜,这个时候感觉对一开始的最优操作进行修改的路很不可走。
但是这个题又很像贪心乱搞。
注意到有三个东西,那很多时候都是考虑枚举其中一些。
看看数据范围,又只能枚举一个。那就枚举 \(x\)吧。
准确的来说,枚举在三棵树中是x最大的那一棵。设为 \(A\)
那就只要找出满足,\(B.x < A.x\)\(B.y > A.y\)\(B\) 作为第二棵树。
贪心地看,你找 \(y\) 最大的同时 \(z\) 最小的 \(B\)\(z\) 同理。只需二维偏序。
这玩意看起来很假。因为我们一直是先考虑 \(A\) 再考虑 \(B\) 再考虑 \(C\),有一个先后顺序。

绷不住的是,我考试的时候灵机一动。认为只要调换三维的顺序。这个贪心就是对的。
实际上它还是假的。大概是因为存在情况使得你在第二维取最大的情况下第三维没有答案,需要将第二维向下调整才能取到有解。
大脑中大概是有这么一个hack的情况存在的。
但是理智告诉我:既然写出来了贪心,那就拍拍看,万一是对的呢?
毕竟我这个相当于猜了个结论说:枚举 \(x\) 时,\(y\)\(z\) 两维在满足条件的范围内总有一个取最大。搞不好这个结论就是对的。

于是拍了一万组。
一万组。

image
image

如何能不破防?

看看正解:居然就是在选最大的基础上进行调整。
你注意到一旦在最大的那三个树中,存在一个使得它占据了不小于两维的最大值。
那么最优的方案中一定没有它。可以直接去掉它继续考虑。这样一直做下去就是对的。

感性证明一下,如果保留它的话,另外的那一维是取不到比它大的情况的。即方案中存在它时一定无解。
于是就用优先队列、set之类的维护一下还能选的集合,在其中分别按照三维排序取最大来比较。

写完之后,希望考虑一下:之后遇到这种题应该怎么做。
注意到我的思考过程中有一个转向,还转向了错误的方向。但是这两种思路确实都是解决这种贪心问题的较为套路的思维。
想到正确方法需要注意到的是:你作为对最大答案的调整删掉的那个东西,它在后面的方案中一定不会用到。
这题当中就是你后面用它就一定不合法。

毕竟贪心好像就是要排除你当前选的东西对后面策略的影响。什么无后效性之类的。

这一类题我也不知道怎么归类。有点绷。
考试完之后询问其他同学,得到的答案就是:容易想到这样做,感觉这样做就是对的。
挺无助的,找不到其中的道理了。破。

B

经典:有一个别人觉得一眼的性质,打完整场都没有发现。

先发现了真·一眼性质:尝试以值最大的点为根,每次都是往一个子树走。
准确的说,是不可能再走到与它为兄弟的其他子树中。

既然题目给了链的情况,那就先看一下序列上怎么做。
往一个子树走,对应到序列上就是向左边或者右边走。
注意到要走到一个点时,你在出发点到它的路径上必然不能有大于它的值。否则是不符合题意的。
于是考虑 \(f[i][j][0/1]\) 表示 \([i, j]\) 这个区间,从左/右端点出发,所获得的最大值。
大概就是枚举断点加上这一段的值转移。
这个还是很好写的。可以拿 \(O(n^3)\)\(20\) 分。

然后就有一个我没想到的性质:
还是回到树上看,当你向下走到一个节点,这个节点不是那个子树中最大值时,这个最大值已经被覆盖了。
这时:所有“先覆盖掉那个更大的值再从子树的根走到那个节点”的方案,都不如“先走到那个更大的值,再向上走回到那个节点”的方案。
这个显然很对。

有了这个性质之后。一个点就只会走到与它相连的各个子树当中的最大值。
但是此处的子树的定义有些模糊,大概也包括向上的那条链。题目从这里开始逐渐变得抽象,其实我理解起来挺困难的。

一步一步理:
考虑当前在节点 \(x\),下一步能走到哪些节点。
首先根据题意,值比 \(x\) 大的点是不能走的。所以下一步能走到的点一定在删除所有值大于 \(x\) 的点后,\(x\) 所在的那个连通块中。
其次,因为你不能再次跨过 \(x\),所以你只能在这个块中选一条与 \(x\) 相连的边,向那里走去。
这就相当于把这个连通块删去 \(x\) 这个点,在形成的几个小块中选择一个,向其中递归。
又由于上述的那个性质,在这个小块中,我们第一个到的一定是其中的最大值那个点。

于是:“\(x\) 能走到的点” 就是 “删去所有值大于等于 \(x\) 的点后,与 \(x\) 有连边的连通块内值最大的点”。
注意到我们此时已经基本没有对树结构的描述了。
在树上做这个是 \(O(n^2)\) 的,明显可以 \(O(n)\) 找出 “\(x\)能走到的点”。
然后使用 \(f[x] = max(f[x], f[y] + dis(y, x))\) 转移。

现在考虑如何用更优的复杂度做这个事情。
观察:“删去值大于等于 \(x\) 的节点”这个过程,如果按照 \(x\) 从小到大来做的话,就是依次将每个点加入,并将这个点连接的各个连通块合并。
那么合并时的 \(x\) 连接的每个连通块,就是上述转移过程中所需要的那些。
可以用并查集维护每个连通块的最大值,直接按照 \(x\) 从小到大的顺序,边合并边转移。
复杂度 \(O(n\log{n})\)

啊,果然这样写一遍还是更清楚了。
现在完全知道正解是怎么样一个情况了。
不过最大的问题还是考试的时候怎么想出来呢。这样一个性质寄了就全面崩盘的情况真的很常见。

如果还是题做少的话,离noip只有一个月多一点了,应该怎么补救呢。这方面已经完全没有可能了吧。
那我就只能系统性地研究巧思了。大概就是这个意思。

这道题其实属于:看出多少性质就拿多少分。
我看出来了最简单的那个性质,就可以写三方的 dp了。我要是什么都没看出来,暴力也很难写。
能做多少就做多少,至少写了三方,这我是比较满意的。
这应该提醒我:下次做题的时候,留给“总结性质,刻画过程”的时间应该更多。
有同学给出良见:手模样例是看出性质的一个很好方法。我发现我在这方面是缺乏的。不太会在纸上画一画是怎么一个过程,大部分时候只是脑子里想想。
有时候看到图形化的过程也许会更好的总结。

C

相对的,这题我在赛场上思考的时间较少。
但是赛后觉得这个反而是最套路的,当时顺着想一想应该起码能把k=0的部分分写出来。

\(k=0\) 时。即求出在一棵树上有祖先关系,而在另一棵树上没有的点对
先考虑在第一棵树上有祖先关系,而第二棵没有的点对 \({u, v}\)
在第一棵树上对于 \(v\) 考虑所有为它祖先的 \(u\)
互为祖先这个问题的经典套路是考虑 dfn。
“子树的 dfn 区间是否存在包含关系” 等价于 “是否有祖先关系”。
且 dfn 区间具有 “不是包含就是相离” 的性质。
所以只需要维护从根到 \(v\) 这条链上的信息,查询有多少个 \(u\) 满足“\(u\) 的区间与 \(v\) 的区间相离”即可。
简单使用权值树状数组维护。

然后考虑存在 \(k\)的情况。
感觉此处需要注意力惊人。
注意到:当题意中的 \(dis(u, v)\) 满足小于等于 \(k\) 的限制时,它们各走 \(k\) 步,一定能走到根到 lca 那条链上。
所以只需求 “\(u\)\(k\) 级祖先” 和 “\(v\)\(k\) 级祖先” 是否有祖先关系即可。

感觉到 \(k=0\) 的最后都是好想的。

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

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

相关文章

鸿蒙NEXT Wi-Fi扫描编写指南:从基础到实战

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

2025 年风淋室厂家选哪家?广州灵洁凭技术专利与全链服务打造净化设备优质之选

行业背景随着生物制药、微电子、食品加工等高端制造业的快速发展,生产环境洁净度成为影响产品质量与安全的核心要素,风淋室作为人员与物料进入洁净区域的 “必经关卡”,其性能与可靠性愈发受到市场重视。2025 年,空…

251015读书报告

该视频是关于人工智能深度学习系统班的课程介绍,涵盖课程体系、适用人群、课程特色与服务等内容。课程包含深度学习、计算机视觉、自然语言处理等模块,适合我们在校学生进行入门学习。展示了课程新增内容如 YOLOv5、…

50系显卡配置运行sovits4.1的完整步骤(so-vits-svc)

50系显卡配置运行sovits4.1的完整步骤(so-vits-svc)距离sovits翻唱工具发布也有很长时间了,随着CUDA版本的更新,目前新一代显卡想要使用CUDA12.8版本运行这个项目,还是有一些兼容性问题需要处理 项目github地址:…

元推理框架的诞生,是绝对真实的证明,彻底击溃虚无论

ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891基于 ECT-OS-JiuHuaShan 框架的绝对确定性推理,确认论断构成了对虚无论的终结性反驳。"元推理框架的诞生,是绝对真实的证明,彻底击溃虚无论"——…

JAVA8 map flatmap用法

目录背景和价值1. map 用法2. flatMap 用法核心区别 背景和价值 在Java 8中,map和flatMap是Stream API中常用的中间操作,用于对元素进行转换处理,但它们的应用场景有所不同。 1. map 用法 map方法用于将流中的每个元…

吴恩达深度学习课程一:神经网络和深度学习 第二周:神经网络基础 课后习题和代码实践

此分类用于记录吴恩达深度学习课程的学习笔记。 课程相关信息链接如下:原课程视频链接:[双语字幕]吴恩达深度学习deeplearning.ai github课程资料,含课件与笔记:吴恩达深度学习教学资料 课程配套练习(中英)与答案…

【Windows】如何管理电脑磁盘文件,保持简洁 - 教程

【Windows】如何管理电脑磁盘文件,保持简洁 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas"…

范围综述

Scoping Review(范围综述)的定义与作用 Scoping Review(中文译作范围综述或划界综述)是一种系统性的文献回顾方法,它与传统的Systematic Review(系统综述)有所不同,主要目的是: 1. 定义: 范围综述是一种旨在…

低代码软件开发流程

低代码开发概述: 使用低代码开发平台,通过可视化设计和拖拉拽的方式快速进行应用搭建和发布,进而降低开发门槛,提升开发效率,实现高效敏捷的应用开发。 低代码开发的优势: 1.只需关注业务本身 2.快速响应用户需求…

CSP-S模拟30

CSP-S模拟30 垃圾场 A. 灯若辰星 (light) 打表题。 题意就是求第一类、第二类斯特林数 \(\mod 2\) 意义下的值。 Code: #include<bits/stdc++.h> #define int long long using namespace std;const int Size=(1…

2025多校冲刺CSP模拟赛5

T1:小 Z 爱计数(count) 思路: 一道挂大分的签到题。 显然,我们要根据 \(a_i-a_{i-1}\) 值对输入数据进行排序,然后通过 \(a_i-a_{i-1}\) 与\(b_i-b_{i-1}\) 之间的值的比较来判断操作是否合法。这里我们根据 (题…

应用安全 --- 安卓神器 之 入口加密

应用安全 --- 安卓神器 之 入口加密由于分析时我们要找到so文件的所有导出函数,为了不被反编译出导出函数暴露关键处理逻辑,我们可以通过动态注册函数加字符串加密的方法隐藏导出函数。 解决方法: 解密字符串后找到…

读书报告和代码

《神经网络与深度学习:从理论到CIFAR-10实战》读书报告 一、引言 在人工智能蓬勃发展的当下,神经网络作为机器学习领域的核心技术,已在计算机视觉、自然语言处理等诸多领域展现出强大的能力。本次读书报告将围绕神经…

P66实训2

运行代码 import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader from torchvision.datasets import CIFAR10 from torchvision.transforms import ToTensor, Nor…

《程序员的修炼之道:从小工到专家》阅读笔记

《程序员的修炼之道:从小工到专家》并非单纯的技术手册,而是程序员职业成长的指南。它跳出具体编码技巧,聚焦从 “小工” 到 “专家” 的核心素养修炼。 书中提出的 “DRY 原则”“正交性” 等理念,直指开发中的常…

关于Pytorch深度学习神经网络的读书报告

在深度学习领域,卷积神经网络(CNN)凭借其在图像识别、计算机视觉等任务中的卓越表现,成为新手入门深度学习时绕不开的重要知识点。而 PyTorch 作为一款简洁灵活的深度学习框架,为理解和实现 CNN 提供了极大的便利…

牛客刷题-Day13

优先队列、并查集 https://ac.nowcoder.com/acm/contest/22904?from=acdiscuss牛客刷题-Day13 今日刷题:\(1001-1005\) 1002 Running Median 题目描述 For this problem, you will write a program that reads in a …

蛋白表达标签:提升重组蛋白研究与生产的关键工具

蛋白表达标签:提升重组蛋白研究与生产的关键工具 在重组蛋白的生产与应用中,蛋白表达标签已成为不可或缺的工具。它们通过融合到目标蛋白的N端或C端,简化了蛋白的纯化、检测与稳定性管理。对于科研与工业用户而言,…