首页 > 其他分享 >CF1887C Minimum Array

CF1887C Minimum Array

时间:2023-10-24 16:15:35浏览次数:51  
标签:线段 CF1887C 决策 Minimum Array 复杂度

一个很直接的思路是,维护当前可行决策集合 \(S\in\{0,\dots ,q\}\),从 \(1\) 到 \(n\) 分别考虑每一个 \(a\),排除一些决策,最终得到答案。

既然要排除决策,我们当然需要知道对于当前的 \(a_i\),前 \(j\) 个操作之后的值都是多少,如果能得到这个,且这些值都在线段树上呈现,我们直接在线段树上暴力删掉值非最小值的决策,这样复杂度均摊下来就是对的,具体来说,线段树上维护区间 max 和 min 即可。我们发现如果用线段树从左到右扫的话,其实只有每个操作的差分位置会被修改,总修改次数为 \(O(q)\) 量级。

时间复杂度 \(O(q\log n)\)。

标签:线段,CF1887C,决策,Minimum,Array,复杂度
From: https://www.cnblogs.com/ydtz/p/17785035.html

相关文章

  • [WebGL] sampler2DArray demo 多纹理渲染
    背景之前尝试过利用多个纹理单元,再基于传入给shader的vertexBuffer信息决定选1号纹理单元还是2号纹理单元。虽然理论上,这个方式确实行得通,但是一次drawcall绘制多个纹理,本来目的是为了提高绘制性能,而实际上却无法提高性能,甚至还有反作用。因为有说法是shader分支会......
  • CF1887C Minimum Array
    CF1887CMinimumArray小丑做法。首先差分一下,转化成两次单点加。每次考虑前\(i\)位,然后一直维护当前合法的时刻区间,这个东西怎么做呢?可以离线下来记录每个点被那些操作波及,然后算一遍前缀和,对于合法的区间区间打标记。需要支持区间加\(1\)和查询最大值,用线段树维护。复杂度......
  • ArrayBuffer
    ArrayBuffer对象、TypedArray视图和DataView视图是JavaScript操作二进制数据的一个接口。这些对象早就存在,属于独立的规格(2011年2月发布),ES6将它们纳入了ECMAScript规格,并且增加了新的方法。它们都是以数组的语法处理二进制数据,所以统称为二进制数组。这个接口的原始设计目......
  • CF1479B1 Painting the Array I
    如果两种方案末尾两数有一数相同,那么答案较大的方案不劣于答案较小的方案。答案较大的方案只需\textbf{模仿}答案较小的方案即可,在状态变成相同之前答案最多只会少\(1\)。所以只需要考虑末尾两数\(a,b\)与新进来的数\(c\)各不相同时该替换哪个。假设\(a\)下次出现的位置......
  • B. Friendly Arrays
    B.FriendlyArrays依据异或特性,如果n为偶数,单调递减:与b[i]|越多越小反之递增点击查看代码#include<bits/stdc++.h>usingnamespacestd;constintN=2e5+10;#defineLLlonglonginta[N],b[N];voidsolve(){ intn,m; cin>>n>>m; if(n%2==0){ int......
  • hook array push
       letarr=[1,2,3];letproxy=newProxy(arr,{get(target,prop){if(prop==='push'){returnfunction(...args){console.log('push方法被调用了');returntarget[prop].apply(target,args);}......
  • Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法
    Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,此处测试代码如下,这里使用add方法:1publicclassmain{2publicstaticvoidmain(String[]args){3int[]num={1,2,3};4Listlist=Arrays.asList(num);5list.add(4);......
  • 无涯教程-AWK - 数组(Array)
    AWK具有关联数组,您可以使用字符串或数字作为数组索引。array_name[index]=value其中array_name是数组的名称,index是数组的索引,而value是分配给数组元素的任何值。创建数组为了获得更多关于数组的见解,让我们创建和访问数组的元素。[Learnfk]$awk'BEGIN{fruits["m......
  • 无涯教程-Arduino - Multi-Dimensional Arrays函数
    具有二维的数组(即下标)通常表示由以行和列排列的信息组成的值表。intb[2][2]={{1,2},{3,4}};这些值按大括号按行分组,因此,1和2分别初始化b[0][0]和b[0][1],而3和4分别初始化b[1][0]和b[1][1],如果给定行的初始化程序不足,则将该行的其余元素初始化为0。因此......
  • disp函数/fprintf函数/arrayfun函数
    disp命令只能打印多个变量的值打印多个变量时,可以把它们放在一个数组中或结构体中fprintf命令打印多个变量fpritf(fileID,formatSpec,A1,A2,A3...)arrayfun(func,A)将func应用于A的每个元素functiony=f(x)...endx=-2:1:2;y=arrayfun(@f,x);plot(x,y)......