首页 > 其他分享 >Lucky Array

Lucky Array

时间:2023-11-09 11:55:22浏览次数:37  
标签:10 复杂度 个数 Lucky tag 差值 Array 维护

数据结构抽象题

法一:总共加 \(O(10^9)\) 次,我们常数超小的树状数组可以直接拿下!!!(时限4.0s)

法二:答案不多,值域不大,我们分块,块记录数出现的次数,然后用tag维护一下增量,注意cnt里的东西和tag没关系,查询才要用到tag。时间复杂度 \(O(30N\sqrt{N}=10^9)\),看似没优化,但是实际上当\(d<0\)时该做法依然可以通过!!!

法三:答案不多,值域不大,我们对每个数维护它到第一个 \(\ge\) 自己的幸运数的差值,建立线段树,节点维护最小值和最小值个数,显然答案就是 0 的个数,但是维护 0 的个数不方便,所以维护前面提到的信息。当有一个差值小于 0 的时候,我们暴力地去修改线段树节点,从根开始遍历,如果儿子小于 0 就递归它,每次的时间复杂度是 \(O(klogn)\),\(k\)是差值小于 0 的数的个数,相当于单点修改 \(k\)次,每个数最多操作30次,相当于最多单点修改 \(30n\)次,时间复杂度 \(O(30nlogn = 10^8)\),赢!!!

标签:10,复杂度,个数,Lucky,tag,差值,Array,维护
From: https://www.cnblogs.com/zhangchenxin/p/17819390.html

相关文章

  • 线程安全集合(JDK1.5之前和之后)、CopyOnWriteArrayList、CopyOnWriteArraySet
    JDK1.5之前JDK1.5之前:Collections.synchronizedList JDK1.5之后CopyOnWriteArrayList   CopyOnWriteArraySet    ......
  • ArrayList的contains()方法的性能问题及优化方法
    背景今天定位一个接口耗时问题,通过日志定位到在数据库查询完毕后,中间一段逻辑耗时很长有十几秒的样子,发现是循环中使用ArraysList中的contains方法,当循环数量级变得很大时,执行时间变得不可控。代码示例//有5万个门店List<Store>storeList=storeMapper.se......
  • [CF1588F] Jumping Through the Array
    不妨认为\(n,q\)同阶。考虑根号重构。如果没有第3种操作的话,我们每\(\mathcalO(\sqrtn)\)操作整体更新一次,每个询问只需要考虑块内的修改所在置换环上有多少\([l,r]\)内的数。这个是容易\(\mathcalO(n\sqrtn)\)做的。然后考虑置换环会变怎么办。注意到一个块内真......
  • 关于Java使用Arrays类的equals()函数比较两个数组是否相等功能的实战
    关键词:文件流问题:二进制流文件丢失解决方法:java.util.Arrays.equals(byte1[],byte2[])分析:Arrays.equals()函数比较的是数组的内容而不是引用。也就是说,只有数组的元素内容相同,并且顺序也相同,才会返回true。      如果数组的元素内容相同但顺序不同,或者数组的引用......
  • Array 方法之at()方法
    at()方法接收一个整数值并返回该索引的项目,允许正数和负数,正数是从头开始索引,负数是丛尾开始索引找不到就返回undefined1.constarray1=[5,12,8,130,44];console.log(array1.at(2));//8索引从0开始console.log(array1.at(-2));//130索引从后面-1开始c......
  • cf797eE. Array Queries(暴力+复杂度分析)
    cf797e还是暴力,将不同的询问根据k分开,然后bfs,建出一棵树,然后dfs。时间复杂度:O(能过)稍微口胡分析一下大概是\(min(1,q[1])*n/1+min(2.q[2])*n/2+min(3,q[3])*n/3+.....\)qi表示第k=i的询问个数因为每一种k它最多将所有的a分成k类,如果全部满了,就是n,那么显然是尽量分配给前面......
  • Python数据类型bytes 和 bytearray
    bytes和bytearray都是二进制世界的成员,用二进制的方式去理解才能看清他的本质。理解bytes和bytearray0和1是计算机工作的根本,单个的0和1只能表达两种状态,无法满足我们复杂的计算,于是计算机使用了8位即一个byte作为一个储存的基本单位。byte由8bit组成,例如   0000......
  • [LeetCode] 1535. Find the Winner of an Array Game
    Givenanintegerarrayarrofdistinctintegersandanintegerk.Agamewillbeplayedbetweenthefirsttwoelementsofthearray(i.e.arr[0]andarr[1]).Ineachroundofthegame,wecomparearr[0]witharr[1],thelargerintegerwinsandremainsat......
  • Lucky日记
    前言有空或看心情写。主要是平常很少在机房。2023赛季(仅从10月开始)10.17这几天不知道为什么,有亿点累,还很困。早上考了C组模拟赛,T3因为我分段写暴力,只拿了40,但实际上暴力可以拿满,QwQ。下午改题,发现我纯纯是个sb+小丑。写完,随机跳题,打发时间,写到了晚上。晚上写了篇......
  • JSONArray 分页
    publicJSONArraydatePageSize(IntegerpageNo,IntegerpageSize,JSONArraydata){JSONArraynewDate=newJSONArray();Integercounts=data.size();//获取数据总数Integerstart=(pageNo-1)*pageSize;//获取开始值Integerend=(pageNo)*p......