代码源2025长训_noip

news/2025/11/23 21:53:57/文章来源:https://www.cnblogs.com/2020luke/p/19261645

NOIP

11/4 Day 1

A

题解:题读错浪费 2h。注意到其实题目给定了每个点的所有出边的编号可能。这也就是说只要我们从叶子节点开始,由于叶子节点的度数为 \(1\) 则那条边一定会确定。那么我们如果从叶子开始往上转移,每个点到它儿子的边都确定后只剩下它到父亲的边也一定能确定。这样我们就确定了所有的边。

确定后我们判断是否相同的边都构成简单路径,一条简单路径只会有两个点度数为 \(1\),其余所有点度数都为 \(2\),以这个条件判断即可。

我以为只有某些点确定了出边导致贼难实现。

B

题解:我们先假定 \(n>m\),如果一开始不是就转一下然后 0/1 取反。

先考虑没有 \(\texttt ?\) 的情况,答案就是 有 0 的列的数量有 1 的行的数量 取最大值。

考虑设计 dp,\(f_{i,j}\) 表示考虑了前 \(i\) 列,有 \(j\) 列选了至少一个 \(\texttt 0\) 的方案数。发现性质,若 \(f_{m,j},j<m\) 则至少有一列全都是 \(\texttt 1\),也就说贡献为 \(\max(j,n)\);若 \(j=m\) 则说明每一列都有一个 \(\texttt 0\),贡献为 \(m\) 依然 =\(max(j,n)\)。这样我们就得到了一个 \(O(m^2)\) 的 dp。

我们发现对于 \(j<n\)\(f_{i,j}\) 答案为 \(f_{i,j}\times n\);对于 \(j\geq n\)\(f_{i,j}\) 答案为 \(f_{i,j}\times \max(j,n)\)。我们用一个 \(g_i\) 表示 \(\sum\limits_{j\geq n} f_{i,j}\),这样做 \(g_{i-1},f_{i-1,n-1}\to g_i\),同时 \(j<n\) 正常转移,就能 \(O(nm)\) 完成 dp。

C

todo:EXKMP,Z 函数

11/6 Day 2

A

题解:首先可以发现这个区间有一定的单调性,也就是说若 \([l_1,r_1]\in[l_2,r_2]\)\([l_1,r_1]\) 合法则 \([l_2,r_2]\) 也一定合法。可以考虑重构区间 2 时只重构包含的区间 1 的部分,其余部分不变也依然合法。

B

题解:通过手推可以发现合法的图一定能满足:在图中能找到一条链,使得每一个点到链的距离都 \(\leq1\)

考虑这玩意得靠直觉,首先发现链一定可行,又想到题目的这个限制好像蛮强的因为怪物动的挺快;于是想在链上往外延申一些点考虑是否可行;发现延申超过一层就一定炸也就得出了这个结论。

考虑这个该如何维护。

设不在链上的结点为叶子节点,则所有叶子结点的度数都为 \(1\),否则 \(>1\) 的都为链上节点。我们只需要判断是否所有点相邻的 \(d_v>1\) 的点的数量 \(\leq2\),记这个数量为 \(f_u\),则对于每个点都有 \(f_u\leq2\)

发现如果一个图满足,那么它的任意一个子图也满足,说明有二分性,也就是可以双指针。

双指针加入和删除点的本质其实是加入和删除当前点所有的边。接下来模拟的过程比较抽象。

考虑双指针时加入每条边 \((u,v)\) 时,\(d_u,d_v\)\(+1\)。如果修改完此时 \(d_u=2\) 就说明原来 \(u\) 是叶子,将与 \(u\) 相邻的点的 \(f_{frm_u}\gets f_{frm_u}+1\) 计算贡献,如果 \(d_v\geq2\)\(f_u\) 加贡献;对于 \(d_v=2\) 同理。

考虑删边时 \(d_u\gets d_u-1\),大致同理,考虑修改完 \(d_u=1\),则说明变成了叶子节点 \(f_{frm_u}\gets f_{frm_u}-1\)

只需要存下来此时有多少点 \(f_i>2\) 然后双指针即可。

C

todo

11/8 Day 3

A

题解:将向量 v 排序后,构建其前缀和数组 s。

由于在同一时刻对同一维度进行多次操作不优,因此无需考虑同时性的问题,只需判断所需增加的距离之和是否足够即可。

一个显然的性质是,随着 k 的增大,需要考虑的维度 i 是单调不增的,且满足 \(i>k\)。因此,我们可以使用双指针维护 \(i\):若满足 \(v_i+1\times i−s_i≤k\times v_i+1\)\(i≤k\),则将 \(i\) 增加 1。

由不等式 \(ans\times k≥ans\times i−s_i\)

可得 \(ans=⌊\dfrac{s_i}{i−k}⌋\)。时间复杂度为 \(O(n\log⁡n)\),瓶颈在于排序。

B

题解:可以考虑从 C 性质入手。由于可以一定不踩黑色,求出 \(nxt_i\) 表示 \([i+1,i+k]\) 中最靠右的白色位置。倍增跳即可。

思考没有 C 性质怎么做,经过长度为 \(len\) 的黑段一定有 \(\lfloor \frac{len}{k}\rfloor\) 个点被踩到,所以把长度为 \(len\) 的黑段缩成 \(len\bmod k\),同理跑 C 性质的做法,然后把 \(\lfloor \frac{len}{k}\rfloor\) 插回去就好。

11/11 Day 4

C

思路:赛时看题发现似乎做过一道 CF 的原,仔细看了一下发现有区别,原题要求“上升子序列个数” \(=X\),这题要求“最长上升子序列个数”,想想区别在哪。

发现原题的做法有启发性。原题上一个连续的单调上升序列贡献是 \(2^k\),那么我们先建一个序列 \(1\to \lfloor\log X\rfloor\),此时若 \(X_i=1\) 也就是 \(X\) 的第 \(i\)\(1\) 时,我们就在序列上 \(i\) 的值后面加入一个 \(\inf-i\),这样就相当于加上了一个 \(2^i\) 的贡献。

我们看此题也可以这样做。我们建一个 \({2,1,4,3,6,5,\dots,\lfloor\log X\rfloor}\) 的序列,此时的贡献为 \(2^{\lfloor\log X\rfloor}\),最长上升子序列的长度为 \(\lfloor\log X\rfloor\)。若 \(X_i=1\) 我们也就想让序列上 \(2i-1\) 的值后面能接上一个长度为 \(\lfloor\log X\rfloor-i\) 的上升子序列,同时这个子序列不会跟 \(>2i-1\) 的数连起来也就是可行的。我们可以让所有 \(X_i=1\) 共用一段上升序列,通过改变这个序列的值来保证不会有不属于 \(X_i=1\) 的点后面会接上这个上升序列后构成新的最长上升子序列。

这样做我们前面的序列长度为 \(2\lfloor\log_2 X\rfloor\),后面的上升序列长度为 \(\lfloor\log_2 X\rfloor\),总共长度为 \(3\lfloor\log X\rfloor\),只能有 \(60pts\)

我们把 \(\log_2\) 改成 \(\log_4\) 总长变为 \(5\lceil\log_4 X\rceil\) 在这种做法下答案最优,但也只能达到正好 \(295\),拿不到满分。正解应该需要做法上的优化。

赛后:发现并不需要做法上的优化,需要一些卡数量的技巧。最后一个连续的一段可以减掉 \(4\) 个。发现最高位的最后至少一个点一定不会在 LIS 中,删除后一定有 \(p_n=n\),又可以删除,此时少两个点只要 \(289\) 次就能过。

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

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

相关文章

PySpark - PCA

PySpark - PCA from pyspark.ml.feature import PCApca = PCA(k=2, inputCol=features, outputCol=pca_features) pca_model = pca.fit(df) pca_df = pca_model.transform(df) pca_df.show(truncate=False) +---+-----…

组合博弈 sg函数 Nim游戏的板子默写

简单的取子用sg(x)==0 判断不就可以了吗!!! 所有游戏单个子游戏的思想 1.sg(x)有向无环图上的棋子游戏 每个棋子和它的出边都构成单独的有向无环图 通过一个棋子的所有后继节点我们可以得到这个点的sg ans是所有点的…

详细介绍:Ribbon是如何与服务注册中心nacos交互的

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

Day46(16)-F:\硕士阶段\Java\课程代码\后端\web-ai-code\web-ai-project02\tlias-web-management

事务管理@Transactional(rollbackFor = {Exception.class})//事务管理的注解 - 默认出现RuntimeException才会回滚 @Override public void save(Emp emp) throws Exception{//1.保存员工的基本信息emp.setCreateTime(L…

完整教程:日本生活-东京新干线乘车经验-流程介绍

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

代码随想录算法训练营第三天:链表part01

代码随想录算法训练营第三天:链表part01**203.移除链表元素 ** leetcode链接:https://leetcode.cn/problems/remove-linked-list-elements/ 题目描述:给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所…

2025-07-21-Mon-T-RocketMQ

1. 核心功能 1.1 MQ介绍 RocketMQ基本组件Topic: 消息归类的基本单元 Queue: 消息队列 Producer Consumer ConsumerGroup: NameServer:可以理解为注册中心,负责更新和发现Broker Broker集群:Broker 可以有一个或…

第一章 简介

关于简介这一章,作者简单阐明了CPU,GPU过去的发展,以及它们的差异。除此之外,作者还引入了CUDA,介绍了CUDA的代码类型,以及全书的结构。 此章值得注意的点如下: 1、GPU上的晶体管数量超过CPU上的。 2、两设备之间…

2025-07-13-Sun-T-AI-LangChain4j

1. 认识AI 1.1 神经元介绍 黑马LangChain4j入门到实战项目: 项目地址 软件架构 前端:静态页面后端框架:SpringbootLangchain4j + Ollama持久化:本地文件存储对话记录 (resources/memory) 用户预约信息存储在内存(…

P24_现有网络模型的使用及修改

P24_现有网络模型的使用及修改24.1 VGG16网络模型: (1)打开pytorch(0.9.0)—torchvision.models—VGG(2)参数点击查看代码 pretrained (bool) – If True, returns a model pre-trained on ImageNet progress (bo…

20232403 2025-2026-1 《网络与系统攻防技术》实验六实验报告

1.实验内容 主要内容:使用ARP扫描和nmap进行主机发现与端口扫描、Vsftpd后门漏洞获得root权限、Samba命令注入漏洞获取系统访问、Java RMI反序列化漏洞建立Meterpreter会话、PHP CGI参数注入漏洞。 掌握Metasploit命令…

第二讲类神经网络训练不起来

第二讲类神经网络训练不起来 一.优化失败的原因梯度为0有可能是local minima 和saddle point 因为计算优化的终止条件是梯度为0,但有可能梯度为0仅是局部最小值local minima或鞍点saddle point(多维,在某些维度是最…

【计算机网络】深入浅出DNS:网络世界的地址簿与导航系统 - 教程

【计算机网络】深入浅出DNS:网络世界的地址簿与导航系统 - 教程2025-11-23 21:39 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !imp…

2025-01-24-Fri-T-如何做一个开源项目

创建和维护一个开源项目是一个非常有意义的工作,它可以帮助你与全球开发者合作,同时建立个人或团队的影响力。以下是详细步骤,帮你从零开始创建一个成功的开源项目。 1. 确定项目目标 解决实际问题:选择一个对你或…

利用大语言模型分析技术支持诈骗Facebook群组的网络犯罪研究

本文介绍了一项利用大语言模型分析Facebook上技术支持诈骗群组的研究,涉及38万条帖子的分类分析,揭示了网络犯罪服务的运作模式和最新趋势。网络犯罪与刑罚:我们在APWG eCrimes会议上关于技术支持诈骗Facebook群组的…

一些唐话

学OI学的言论均为转载 不保证言论可读你干嘛直接放 *3500 啊?!正经比赛里不是这样的!你应该先放两个简单签到,然后提升我的心态。偶尔给我送送强点的大样例,然后在那个我上厕所的时候跟我有神秘互动。最后在某个我…

2025-05-29-Thu-T-设计模式

目录1. 设计模式相关内容介绍1.1 设计模式概述1.2 UML类图类的表示方式类之间的关系表示方法1.3 软件设计原则1.1 开闭原则1.2 里氏代换原则1.3 依赖倒转/依赖倒置原则1.4 接口隔离原则1.5 迪米特法则1.6 合成复用原则…

2025-05-27-Tue-T-JVM

目录1 JVM与Java体系结构1.1 JVM 结构简图1.2 Java代码执行流程1.3 JVM的架构模型1.4 JVM的生命周期一、内存结构1. 程序计数器2. 虚拟机栈2.1 定义2.2 栈内存溢出2.3 线程运行诊断3. 本地方法栈4. 堆4.1 定义4.2 堆内…

11-28

今日掌握了 HashMap 的常用方法(put ()、get ()、containsKey ()),理解了键的唯一性,学会了遍历 Map 集合的两种方式(keySet、entrySet)。 明日计划学习多线程编程,重点理解线程的概念、创建方式(继承 Thread …

20232421 2025-2026-1 《网络与系统攻防技术》实验六实验报告

1.实践内容前期渗透主机发现 端口扫描 选做:也可以扫系统版本、漏洞等。Vsftpd源码包后门漏洞(21端口) SambaMS-RPC Shell命令注入漏洞(139端口) Java RMI SERVER命令执行漏洞(1099端口) PHP CGI参数执行注入漏…