EPIC Institute of Technology Round Summer 2024 (Div. 1 + Div. 2) VP记录

news/2024/9/21 6:04:52/文章来源:https://www.cnblogs.com/AzusidNya/p/18385589

EPIC Institute of Technology Round Summer 2024 (Div. 1 + Div. 2) VP记录

A

一眼 \((n - 1) m + 1\)

B

最后的数列是固定的,每个数与最后数列的数相减后,对差值求和再加上最大值即可。

C

唐诗 C 题,获得 \(3\) 发罚时。

只有一个数右边的数归零了,它才会归零。

右往左扫,如果右边的数已经归零了 \(a_i\) 还不能归零,那么答案设置为 \(a_i\),否则答案自增。

D

相当于,Alice 选一个数后能删除所有小于或等于它的数,Bob 每回合删除一个数。

所以 Alice 每次取最小的就行了,而 Bob 要考虑的就多了。

考虑目标。Bob 的目标是删除尽量多的数。

\(f(i, j)\) 表示前 \(i\) 个数,删 \(j\) 个数后,最多剩多少时间来删 \(j + 1\)

首先如果不删当前数,则有 \(f(i, j) = f(i - 1, j) + 1\)

如果删当前数,则有 \(f(i, j) = f(i - 1, j) - cnt_i\)

直接 dp 即可。

E

\(b_u = \sum _{v \in son(u)} a_v - a_u\),则题目要求的是所有节点的 \(b\) 值不小于 \(0\)。下文简称 \(b\) 值为权值。

那么每次操作就是,选一个节点,令它的权值减去 \(1\) 并令其父节点的权值加上 \(1\),并且叶子节点的权值是正无穷。

那么当当前考虑的 \(u\) 号节点小于 \(0\) 时,我们需要在它的子树内找一个大于 \(0\) 的节点,然后将它到当前点的链上的节点都操作一遍,然后我们就可以使得当前节点的权值增加而子树内选择的节点减少,并且增加值和减少值相同。每次操作的代价的消耗是链长。

那么贪心的,每次选消耗最小的节点即可。对每个点维护优先队列,按深度从小到大选取,每个点计算完答案后把优先队列合并到父节点上。时间复杂度是 \(O(n ^ 2 \log n)\)

F

神仙区间 dp。

场上想了一个小时一点不会,狠狠地认识到自己对区间 dp 一无所知。

首先考虑对于一个 \(i\) 它要能被删除要满足的条件。

  1. \(a_i \le i\)。显然删除两个值不会让 \(i\) 增大。
  2. \(2 | (i - a_i)\)。也是比较显然的。删除两个数不会改变 \(i\) 的奇偶性。
  3. 需要在 \([1, i - 1]\) 这个前缀中恰好删除 \(\dfrac {i - a_i} 2\) 个数,使得 \(i = a_i\)

基于这三个条件,可以进行区间 dp。

\(f(l, r)\) 表示如果要把 \([l, r]\) 这段区间删完,至少要在 \([1, i - 1]\) 这个前缀中删除几个数。

首先有种拼接的转移。枚举断点 \(k\),然后有

\[f(l, r) = \max\left(f(l, k), f(k + 1, r) - \frac {k - l + 1}{2}\right) \]

然后还可以选择将 \(l, r\) 打包删掉。条件是 \(f(l + 1, r - 1) \le \dfrac{l - a_l}2\)

这里区间 dp 完了后,就能统计答案了。

\(g(i)\) 表示前 \(i\) 个数最多进行多少次操作。

枚举 \([1, i]\) 的一段后缀 \([j, i]\),转移条件是 \(f(j, i) \le g_{j - 1}\)

然后就做完了。

G

考虑代码之后补,因为周围人在玩 CS。

这种题不看题解不会写,看了题解发现是萌萌分讨题,然后发现不会写笛卡尔树。

参考 [Moeebius 大神的题解](题解:CF1987G2 Spinning Round (Hard Version) - 洛谷专栏 (luogu.com.cn)),或者说单纯在复述/抄袭其题解。

手摸一下,最后建出来的是一棵基环数,具体地,一棵树然后最大值上挂了个自环,否则一定不连通,即无解。具体判断的时候,如果一个非最大值的点套了一个自环,那么就是无解。

然后考虑建出原排列的笛卡尔树,然后注意两种操作。向左连边相当于连向在笛卡尔树上一直往上跳直到第一次向右跳跳上去的那个节点,向右连边则是一直往上跳直到第一次向左跳跳上去的那个节点。

graph1

上图是排列 \({2,1,4,3,5}\) 对应的笛卡尔树。\(2\) 号点若向右连边,则会连向 \(3\) 号点。

考虑在笛卡尔树上 dfs 的同时求出直径。

\(f(i, 0/1/2)\) 表示 \(i\) 子树内跳出且最后一步对应向 左/右/均有 连边,连边数量的最大值。

对于 \(f(i, 2)\) 要求连出来两条不交的路径。

分讨。

假设现在在点 \(x\),考虑转移。

  1. 路径不经过 \(x\)

    \[\begin {aligned} f(x, 0) &\leftarrow f(lc_x, 0) \\ f(x, 1) &\leftarrow f(rc_x, 0) \\ f(x, 2) &\leftarrow f(lc_x, 0) + f(rc_x, 1) \end {aligned} \]

    注意到如果左子树向左连边跳出了左子树,那么也一定跳出了当前子树。其余情况同理。

    img

    虚线表示不一定直接相连的点。箭头表示新树上连的边。下同。

  2. 路径包含 \(x\),且 \(x\) 向左连边。

    \[\begin {aligned} f(x, 0) &\leftarrow \max \{f(lc_x, 1), f(rc_x, 0)\} + 1 \\ f(x, 2) &\leftarrow \max \{f(lc_x, 1) + f(rc_x, 1), f(rc_x, 2)\} + 1 \end {aligned} \]

    第一个式子表示从左/右子树跳到了 \(x\),再进一步跳出去。

    第二个式子,如果存在一左一右两条跳出 \(x\) 的子树的路径,因为 \(x\) 已经向左跳出了,因此子树内仅有可能向右跳出。由于左子树内向右跳只能跳到节点 \(x\),所以向右跳的路径必然由右子树提供。

    img

    img

    蓝色,紫色箭头表示二选一。下同。

  3. 路径包含 \(x\),且 \(x\) 向右连边。

    和 2 是镜像的。


最后统计答案。记路径两端点的 LCA 为点 \(x\)

  1. 两端点分别属于 \(x\) 的两个子树

    \[ans \leftarrow f(lc_x, 1) + f(rc_x, 0) \]

  2. 两端点来自 \(x\) 的同一子树

    这种情况不方便在 LCA 处统计答案,因为可能两条边距离 LCA 都很远。

    考虑汇合前最后一次跳跃。

    枚举最后的点最后一次连边的方向。假设是在 \(y\) 处向左连边。有:

    \[ans \leftarrow \max \{f(lc_y, 0) + f(rc_y, 0), f(lc_y, 2)\} + 1 \]

    如图所示。

    img

然后就能 \(O(n)\) 解决这个题了。

看起来代码不难写。明天再写?后天再写?谁知道呢。什么时候补这题取决于哪一天 VP 后补题比较快。

H

交互题 + H 题 = 谁爱补谁补去。

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

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

相关文章

入职后,我发现工作内容和自己想象中的不太一致。。

2018年6月,大三暑假进行时,实习第二天上班 昨天王工跟我说最好统一开发工具用eclipse,今早我瞄到其实也有同事用idea。 eclipse还得学习,用idea算了,随便上网找个盗版的就好咯,不纠结这么多。 公司被逮到,也是公司的问题,公司没有禁止使用idea,一定就不是我的问题。一…

folium地图绘制库和报错解决

1.资源库导入pip install folium -i https://pypi.tuna.tsinghua.edu.cn/simple 2.使用时报错解决 2.1 导入 使用报错 2.2 问题解决

Java异常详解(全文干货)

介绍Throwable Throwable 是 Java 语言中所有错误与异常的超类。 Throwable 包含两个子类:Error(错误)和 Exception(异常),它们通常用于指示发生了异常情况。 Throwable 包含了其线程创建时线程执行堆栈的快照,它提供了 printStackTrace() 等接口用于获取堆栈跟踪数据等…

《2024 年最新 YouTube 转 MP3 攻略

在当今数字化时代,我们常常会遇到想要将 YouTube 上的精彩视频内容转换为 MP3 音频格式以便于随时随地收听的情况。以下为大家介绍几种最新的实用方法: **方法一:利用在线工具** youtubemp3dl- **youtubemp3dl**:特别适用于 Windows 和 Mac 操作系统,是一款出色的基于互联…

主观与客观,破除DDD凭经验魔咒

本文书接上回《学习真DDD的最佳路径》,关注公众号(老肖想当外语大佬)获取信息:最新文章更新;DDD框架源码(.NET、Java双平台);加群畅聊,建模分析、技术实现交流;视频和直播在B站。神秘的“凭经验” 一千个人眼中有一千个哈姆雷特,每个人的经历不同,认知不同,那么看…

【Linux网络编程】Reactor模式与Proactor模式

【Linux网络编程】Reactor模式与Proactor模式 Reactor模式 Reactor 模式是指主线程即 IO 处理单元只负责监听文件描述符上是否有事件发生,有则立刻将该事件通知给工作线程即逻辑单元,除此之外,主线程不做任何其它实质性的动作。读写数据,接受新的连接,以及处理客户请求均在…

2024, 是时候告别CentOS了

到了2024年, 不管你有多喜欢CentOS, 也到了该告别CentOS的时候了. 那个可能在你职业生涯中陪伴了你非常多年, 一直稳定运行的Linux系统, 在2024年后, 已经不再是你可靠的选择了. 最后一个仍然还在维护中的CentOS 7将于2024年6月底就END OF LIFE了. 这意味着, 如果你仍然继续使用…

StringBuilder和StringBuffer的区别

一 区别 StringBuilder 线程不安全 StringBuffer 线程安全,原因是它的主要方法用了syncronized关键字修饰二 分析 看源码见

[Azure Application Insights]Azure应用程序见解概述页面中workspace的link不见了?

问题描述 在Azure Application Insights 的概述页面中,可以直接点击 Workspace Link 进入到 Workspace 资源页面。但是,在下面的示例图中,Workspace Link不见了? 这是什么原因呢? 问题解答 这是因为 Workspace 的资源组发生了改变。 Application Insights 无法根据Worksa…

MYSQL索引的选型比较

MYSQL索引 前言 Mysql 作为互联网中非常热门的数据库,其底层的存储引擎和数据检索引擎的设计非常重要,尤其是 Mysql 数据的存储形式以及索引的设计,决定了 Mysql 整体的数据检索性能。 我们知道,索引的作用是做数据的快速检索,而快速检索的实现的本质是数据结构。通过不同…

Prism:结语

Prism:结语 prism基本功能也已经学完了,在学习过程中遇到过很多问题,其中就有一点条我就一直困惑,那就是:依赖注入 什么是依赖注入:(gpt写的) 依赖注入(Dependency Injection,简称 DI) 是一种设计模式和编程技术,用于实现控制反转(Inversion of Control,IoC)。它…