热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CF739CAlyonaandtowers解题报告

线段树绝世好题。题意:维护区间加,全局最长单峰序列。Solution:维护\(8\)个量。\(lval\):左端点的权值。\(rval\):右端点的权值。\(lmax\):以左端点

线段树绝世好题。


题意:

维护区间加,全局最长单峰序列。


Solution:

维护 \(8\) 个量。

\(lval\):左端点的权值。

\(rval\):右端点的权值。

\(lmax\):以左端点开始的最长的下降序列长度。

\(rmax\):以右端点结束的最长的上升序列长度。

\(lans\):以左端点开始的最长的单峰序列长度。

\(rans\):以右端点结束的最长的单峰序列长度。

\(ans\): 区间内最长的单峰序列长度。

\(tag\):区间加法懒标记。

考虑怎么用左右两个儿子更新父节点的信息。

\(lson\) 来表示左儿子,\(rson\) 来表示右儿子,\(rt\) 来表示父节点。


\(lval\)

显然父节点的 \(lval\) 是左儿子的 \(lval\)


\(rval\)

显然父节点的 \(rval\) 是右儿子的 \(rval\)


\(lmax\)

如果说左儿子的 \(lmax\) 等于左儿子的区间长度,说明了左区间是个下降区间,如果同时左儿子的 \(rval\) 大于了右儿子的 \(lval\) 说明了父节点的 \(lmax\) 能向右区间伸展,这个时候 \(rt.lmax = lson.lmax + rson.lmax\)

否则无法跨过右区间,直接继承左儿子的值:\(rt.lmax = lson.lmax\)


\(rmax\)

如果说右儿子的 \(rmax\) 等于右儿子的区间长度,说明了右区间是个上升区间,如果同时左儿子的 \(rval\) 小于了右儿子的 \(lval\) 说明了父节点的 \(rmax\) 能向左区间伸展,这个时候 \(rt.rmax = lson.rmax + rson.rmax\)

否则无法跨过左区间,直接继承右儿子的值: \(rt.rmax = rson.rmax\)


\(lans\)

如果说左儿子的 \(rmax\) 等于左儿子的区间长度,说明了左儿子是个上升区间。

这个时候分两种情况:



  • \(lson.rval 说明了还能通过右儿子的 \(lans\) 继续扩展:\(rt.lans = lson.rmax + rson.lans\)

-\(lson.rval > rson.lval\) 说明了只能通过右儿子的 \(lmax\) 继续扩展: \(rt.lans = lson.rmax + rson.lmax\)

如果说左儿子的 \(lans\) 等于区间长度,想用右儿子扩展的话,必须满足 \(lson.rval > rson.lval\),这个时候:\(rt.lans = lson.lans + rson.lmax\)

否则无法通过右区间来更新,直接继承左儿子的值:\(rt.lans = lson.lans\)


\(rans\)

如果说右儿子的 \(lmax\) 等于右儿子的区间长度,说明了右儿子是个下降区间。

这个时候分两种情况:



  • \(lson.rval > rson.lval\) 说明了还能通过左儿子的 \(rans\) 继续扩展:\(rt.rans = lson.rans + rson.lmax\)



  • \(lson.rval 说明了只能通过左儿子的 \(rmax\) 继续扩展: \(rt.rans = lson.rmax + rson.lmax\)



如果说右儿子的 \(lans\) 等于区间长度,想用左儿子扩展的话,必须满足 \(lson.rval ,这个时候:\(rt.rans = lson.rmax + rson.lans\)

否则无法通过右区间来更新,直接继承左儿子的值:\(rt.rans = rson.rans\)



推荐阅读
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
  • 使用Maven JAR插件将单个或多个文件及其依赖项合并为一个可引用的JAR包
    本文介绍了如何利用Maven中的maven-assembly-plugin插件将单个或多个Java文件及其依赖项打包成一个可引用的JAR文件。首先,需要创建一个新的Maven项目,并将待打包的Java文件复制到该项目中。通过配置maven-assembly-plugin,可以实现将所有文件及其依赖项合并为一个独立的JAR包,方便在其他项目中引用和使用。此外,该方法还支持自定义装配描述符,以满足不同场景下的需求。 ... [详细]
  • 通过利用代码自动生成技术,旨在减轻软件开发的复杂性,缩短项目周期,减少冗余代码的编写,从而显著提升开发效率。该方法不仅能够降低开发人员的工作强度,还能确保代码的一致性和质量。 ... [详细]
  • 触发器的稳态数量分析及其应用价值
    本文对数据库中的SQL触发器进行了稳态数量的详细分析,探讨了其在实际应用中的重要价值。通过研究触发器在不同场景下的表现,揭示了其在数据完整性和业务逻辑自动化方面的关键作用。此外,还介绍了如何在Ubuntu 22.04环境下配置和使用触发器,以及在Tomcat和SQLite等平台上的具体实现方法。 ... [详细]
  • 本文深入探讨了Java多线程环境下的同步机制及其应用,重点介绍了`synchronized`关键字的使用方法和原理。`synchronized`关键字主要用于确保多个线程在访问共享资源时的互斥性和原子性。通过具体示例,如在一个类中使用`synchronized`修饰方法,展示了如何实现线程安全的代码块。此外,文章还讨论了`ReentrantLock`等其他同步工具的优缺点,并提供了实际应用场景中的最佳实践。 ... [详细]
  • 题目链接:https://www.luogu.com.cn/problem/P6453在解决 COCI 2008-2009 第四轮 PERIODNI 问题时,我们需要逐行分析。由于一行中的字符若被断开则不再视为同一行,因此每行的最大矩形区域需要单独计算。通过这种方法,可以确保每层都能找到其最大连续子矩形,从而有效解决问题。 ... [详细]
  • 低代码平台破解“最后一公里”交付难题
    IDC预计,未来所有企业都将转型为数据驱动型组织,这意味着企业的运营、管理和决策将全面依赖数据。然而,当前超过90%的数据是非结构化数据,这给内容协作和数据处理带来了巨大挑战。低代码平台通过简化开发流程,有效解决了这一“最后一公里”的交付难题,帮助企业更高效地实现数据驱动的转型。 ... [详细]
  • 本文介绍了如何利用 Delphi 中的 IdTCPServer 和 IdTCPClient 控件实现高效的文件传输。这些控件在默认情况下采用阻塞模式,并且服务器端已经集成了多线程处理,能够支持任意大小的文件传输,无需担心数据包大小的限制。与传统的 ClientSocket 相比,Indy 控件提供了更为简洁和可靠的解决方案,特别适用于开发高性能的网络文件传输应用程序。 ... [详细]
  • 短信验证码安全性堪忧,多因素认证或成未来主流
    短信验证码安全性堪忧,多因素认证或成未来主流 ... [详细]
  • 斯坦福大学公开课:利用神经网络技术实现自动驾驶的案例分析
    斯坦福大学的公开课深入探讨了如何利用神经网络技术实现自动驾驶。课程中通过实例展示了汽车如何通过学习算法自主驾驶。具体而言,课程展示了一幅图解,其中左下角显示了汽车前方的实时路况图像,而左上角则呈现了一个水平的菜单栏,用于展示系统处理和决策的过程。这一案例详细解析了神经网络在自动驾驶中的应用,为学生提供了宝贵的实践参考。 ... [详细]
  • 如何在Windows 10中彻底禁用用户账户控制弹窗
    如何在Windows 10中彻底禁用用户账户控制弹窗 ... [详细]
  • 在安装并配置了Elasticsearch后,我在尝试通过GET /_nodes请求获取节点信息时遇到了问题,收到了错误消息。为了确保请求的正确性和安全性,我需要进一步排查配置和网络设置,以确保Elasticsearch集群能够正常响应。此外,还需要检查安全设置,如防火墙规则和认证机制,以防止未经授权的访问。 ... [详细]
  • 解决针织难题:R语言编程技巧与常见错误分析 ... [详细]
  • 林沁:首次合作任务解析与实践
    本次作业旨在解析与实践首次合作任务,涉及课程为福州职业技术学院的《软件工程实践》。通过具体案例分析,探讨团队协作中的关键要素与实施策略,提升学生在实际项目中的合作能力。 ... [详细]
  • 如何在C#中配置组合框的背景颜色? ... [详细]
author-avatar
潘月飞--_758
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有