首页 > 其他分享 >QOJ7899 Say Hello to the future

QOJ7899 Say Hello to the future

时间:2024-02-23 15:35:42浏览次数:43  
标签:Say QOJ7899 future 区间 考虑 Hello

QOJ7899 Say Hello to the future

考虑先不管修改怎么做。考虑 DP,\(f_i\) 表示前缀的答案,然后 cdq 分治优化转移。考虑 \(a_i\) 最大值所在位置,若在右侧那么 \(f_i\) 可以被左侧的一个区间转移到,否则左侧的 \(f_j\) 可以转移到右侧的一个区间,两者都可以线性做。然后考虑问询。我们先求出每个后缀的答案 \(g\)。

我们仍然分治。令 \(t _i\) 为 \(i\) 到 \(mid\) 的区间的最大 \(a\),\(w_i\) 为次大值,\(d_i\) 为取到最大值的位置,那么考虑新的合法区间的左端点 \(l\),考虑其所有跨过 \(mid\) 的新合法区间(需要长度 \(<t_l\)),只有在 \(d_i\) 被修改时才会产生,于是将这个贡献加到 \(ans_{d_i}\) 头上即可。考虑如何计算贡献:对于 \(w_l>t_r\) 的情况,产生贡献的 \(r\) 在右侧的一个区间;而对于 \(w_l<t_r\),则还需要保证 \(t_r<t_l\) 且区间长度 \(<t_l\)。不考虑区间长度 \(<t_l\) 时 \(r\) 对一个区间的 \(l\) 产生贡献,差分即可;区间长度 \(\ge t_l\) 时右侧满足也对 \(l\) 产生贡献的 \(r\) 在一个区间。于是就可以总复杂度 \(O(n\log n)\) 完成。

https://qoj.ac/submission/334848

标签:Say,QOJ7899,future,区间,考虑,Hello
From: https://www.cnblogs.com/TetrisCandy/p/18029627

相关文章

  • CompletableFuture异步编程详解
    Future介绍先来回顾下Future,Future是JDK1.5中添加的接口,主要功能为:获取并发的任务完成后的执行结果;能够取消并发执行中的任务;判断并发任务是否执行完成;但Future也有着非常明显的缺点:阻塞:调用get()方法会一直阻塞,直到等待直到计算完成;异常处理:Future没有提供任何异常处理的方......
  • 玩转CompletableFuture线程异步编排,看这一篇就够了
    转载自:https://blog.csdn.net/w306026355/article/details/1097072691、CompletableFuture介绍CompletableFuture可用于线程异步编排,使原本串行执行的代码,变为并行执行,提高代码执行速度。学习异步编排先需要学习线程池和lambda表达式相关知识,学习线程池可以移步我的另一篇博......
  • flutter开发Future与Stream的理解和区别
    flutter开发Future与Stream的理解和区别Future特点Future是表示一个异步操作的单个结果,只返回一次结果。通常用于处理一次性的异步操作。Future通过then()和catchError()方法来处理异步操作的结果和异常。Future使用await关键字来等待异步操作完成。FutureBuilder:通过监听......
  • Go 100 mistakes - #8: any says nothing
    WithGo1.18,thepredeclaredtypeanybecameanaliasforanempty interface;hence,alltheinterface{}occurrencescanbereplacedbyany. IffuturedevelopersneedtousetheStore struct,theywillprobablyhavetodigintothedocumentationorre......
  • Java并发编程-CompletableFuture(上)
    大家好,我是小高先生,这篇文章我将和大家一起学习Java并发编程中很重要的一个类-CompletableFuture。 在Java的并发编程领域,Future接口一直扮演着关键的角色,它定义了一组与异步任务执行相关的方法,包括获取异步任务的结果、取消任务执行以及检查任务是否已完成等。然而,随着业务场......
  • Java并发编程-CompletableFuture(下)
    大家好,我是小高先生,书接上文,我们继续来学习CompletableFuture。上文我们讲了基础装Future是如何升级为神装CompletableFuture以及如何购买CompletableFuture,接下来我们一起来学习如何在战斗中使用CompletableFuture。CompletableFuture的基本使用CompletableFuture的实战案例C......
  • Future和FutureTask
    (Future和FutureTask)Future类FutureTask叫未来任务,可以将一个复杂的任务剔除出去交给另外一个线程来完成Future主要方法get()get方法的行为取决于Callable任务的状态,只有以下5种情况:任务正常完成:get方法会立刻返回结果任务尚未完成:任务还没有开始或进行中,get将阻塞并......
  • SpringBoot中使用Spring自带线程池ThreadPoolTaskExecutor与Java8CompletableFuture实
    场景关于线程池的使用:Java中ExecutorService线程池的使用(Runnable和Callable多线程实现):https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/126242904Java中创建线程的方式以及线程池创建的方式、推荐使用ThreadPoolExecutor以及示例:https://blog.csdn.net/BADAO_......
  • C++中promise和future初认识
    future/promisefuture提供了一个基于数据(future模板类型)的异步概念:对于一个类型T,可以在以后通过get接口获得这个类型T的变量。或者打个不太恰当的比方,当你获得一个future对象时,就获得了一个消费券(consumer):拿着这张券可以兑换(get)一个T类型的结果(如果数据未就绪的话会阻塞等......
  • 深入解析CompletableFuture的功能和用法
    https://zhuanlan.zhihu.com/p/650390185?utm_id=01.CompletableFuture简介1.1概述CompletableFuture是Java8中引入的一个类,它实现了CompletionStage接口,提供了一组丰富的方法来处理异步操作和多个任务的结果。它支持链式操作,可以方便地处理任务的依赖关系和结果转换......