首页 > 其他分享 >CF1322E - Median Mountain Range - 总结

CF1322E - Median Mountain Range - 总结

时间:2023-11-12 17:33:22浏览次数:38  
标签:Mountain Omicron Median Range CF1322E 序列

CF1322E - Median Mountain Range

考虑分别对每个位置求出最后的数字。先枚举出这个数 \(x\),并将 \(a_i \ge x\) 的数设为 \(1\),\(a_i < x\) 的数设为 \(0\),然后做题目中的操作,若为 \(0\),则最终结果小于 \(x\),为 \(1\) 则大于等于 \(x\)。

使用二分可以优化到 \(\Omicron(n^2\log n)\)。

如果将每个位置扩展到整个序列,剩下的按照同样的做法,虽然无法进行二分优化,但复杂度降低到了 \(\Omicron(n^2)\)。

我们发现,\(01\) 序列的情况很特殊,如果将相邻两项相同的位置断开,也就是形成若干个内部都是 \(01\) 相间的段,每段都是一个与原序列相同的子问题,因为段的两端都不会改变。而且因为其内部的特殊性,可以轻松的计算出操作次数 \(\lfloor\frac{r -l}{2}\rfloor\),以及最终的值。并且因为修改一个位置只会影响 \(\Omicron(1)\) 个段,所以这种段可以用 set 轻松维护。

每次修改之后都会导致出现新出现一些最终值从 \(0\) 变为 \(1\) 的区间,这些区间都在新出现的段中,所以我们可以在维护段的时候顺便统计答案。

复杂度 \(\Omicron(n\log n)\)。

标签:Mountain,Omicron,Median,Range,CF1322E,序列
From: https://www.cnblogs.com/FUXyao/p/17827454.html

相关文章

  • Kattis - A Complex Problem (The 2023 ICPC Rocky Mountain Regional Contest)
    IntroThiswasoneoftheproblemsIdidn'tdoduringtheregionalcontest.Oneofmyteammatessolvedit.ObservationTherearefewthingstonote.Firsttypeofnotation:subsetmeansthatA$\subset$B,buttherecanbecasesthatsubsetforms......
  • for循环,range函数,无线while循环
    #for循环中,含有for遍历;其语法结构是:for+变量(设置一个变量)+in+遍历对象#range函数,是Python中的一个内置函数,产生一个{n,m)的整数序列,其中包含n,不包含m#在使用for遍历时将变量用range函数来代替,那么这时for循环将遍历range中的序列中的元素。foriinrange(1,11):......
  • R语言EG(Engle-Granger)两步法协整检验、RESET、格兰杰因果检验、VAR模型分析消费者价
    全文链接:http://tecdat.cn/?p=31108原文出处:拓端数据部落公众号作为衡量通货膨胀的基本指标,消费者价格指数CPI和生产者价格指数PPI的作用关系与传导机制一直是宏观经济研究的核心问题。对此问题的研究显然具有重要的学术价值与现实意义:当PPI先行地引导着CPI的变动,则意味着上游......
  • HDFS基于Ranger鉴权原理
    1.背景在HDFS中,默认是通过setacl和getacl命令的方式增加和查询hdfs的acl信息。为了了解acl信息,需要亲自登陆机器执行hdfs命令,对于没有机器权限的业务人员非常不友好;同时,运维人员无法浏览HDFS所有acl信息,对于管理来说也不透明。为了解决该问题,引入了Ranger组件,将acl信息存放到Ran......
  • 拉格朗日乘子/拉格朗日乘数(Lagrange multiplier)
    基本的拉格朗日乘子法(又称为拉格朗日乘数法),就是求函数f(x1,x2,...)在g(x1,x2,...)=0的约束条件下的极值的方法。其主要思想是引入一个新的参数λ(即拉格朗日乘子),将约束条件函数与原函数联系到一起,使能配成与变量数量相等的等式方程,从而求出得到原函数极值的各个变量的解。 具体......
  • 凸优化 | Lagrange 对偶:极大极小不等式的证明
    背景:Lagrange对偶:对于优化问题\[\begin{aligned}&\mathrm{minimize}~~&f_0(x)\\&\mathrm{subject~to}~~&f_i(x)\le0,~~h_j(x)=0\end{aligned}\]可以建立其Lagrange对偶函数\(L(x,λ,\nu)=f_0(x)+\sumλ_if_i(x)+\sum\nu_jh_j(x)\),\......
  • .NET(C#) Linq Range和Repeat的使用
    Linq是LanguageIntegratedQuery的简称,它是微软在.NETFramework3.5里面新加入的特性,用以简化查询查询操作。本文主要介绍.NET(C#)中Linq的Range和Repeat操作符。1、Range操作符Range操作符用于辅助生成一个整数序列。usingSystem;usingSystem.Collections.Generic;usi......
  • Go语言使用range修改值,需要使用切片的指针 &slice[index]
    由于Value是值拷贝的,并非引用传递,所以直接改Value是达不到更改原切片值的目的的,需要通过&slice[index]获取真实的地址packagemainimport("fmt")funcmain(){ slice:=[]int{10,20,30,40} forindex,value:=rangeslice{ fmt.Printf("Value=%d,value-addr......
  • [LeetCode] 2149. Rearrange Array Elements by Sign
    Youaregivena0-indexedintegerarraynumsofevenlengthconsistingofanequalnumberofpositiveandnegativeintegers.Youshouldrearrangetheelementsofnumssuchthatthemodifiedarrayfollowsthegivenconditions:Everyconsecutivepairofint......
  • 使用C++实现Range序列生成器
    在C++编程中,经常需要迭代一系列数字或其他可迭代对象。通常,这需要编写复杂的循环结构,但有一种精妙的方法可以使这一过程变得更加简单和可读。如果你使用过Python语言那么一定对Range语句非常的数据,我们可以使用C++来实现一个简单的Range封装,如下代码定义了一个名为Range的命名空间......