首页 > 其他分享 >数据结构中的数颜色模型

数据结构中的数颜色模型

时间:2022-08-18 14:45:28浏览次数:82  
标签:now 颜色 int 模型 times 朵莉树 数据结构 莫队

目录

目录

简介

在练习数据结构中,我们经常看到有以下操作的题:

  • 求一个区间 \([l,r]\) 的数字种数。
  • 求一个区间 \([l,r]\) 某一个数字 \(k\) 的出现次数。

我们称这一类问题为“数颜色模型”

例子:

一些解法

莫队/带修莫队

时间复杂度:莫队 \(O(m\sqrt{n})\),带修莫队 \(O(mn^{\frac{2}{3}})\)。

先开一个桶 \(b\),如果添加一个数 \(v\),那么 \(b[v]\) 加上 \(1\)。当然,如果加完后 \(b[v] = 1\),那么就出现了一个新颜色。删除元素 \(v\) 时,\(b[v]=b[v]-1\),如果减完后 \(b[v]=0\),那么就消失了一个颜色。

关键代码如下:

void add(int x){
	times[x]++;
	if(times[x]==2){
		++tans;
	}
}

void remove(int x){
	times[x]--;
	if(times[x]==1){
		--tans;
	}
}

题目:

珂朵莉树

时间复杂度均摊 \(O(m\log\log n)\);最差 \(O(mn)\)。

由于珂朵莉树本质上是暴力,自然可以维护颜色。只要有区间染色。

关键代码:

int times(int l, int r, int c) {
    int res = 0;
    odti rs = split(r + 1);
    odti ls = split(l);

    for (odti now = ls; now != rs; now++) {
        if (now->v == c) {
            res += (now->r - now->l + 1);
        }
    }

    return res;
}

题目:

标签:now,颜色,int,模型,times,朵莉树,数据结构,莫队
From: https://www.cnblogs.com/zheyuanxie/p/color-counting-model.html

相关文章

  • 38、python并发编程之IO模型
    38、python并发编程之IO模型  目录:一IO模型介绍二阻塞IO(blockingIO)三非阻塞IO(non-blockingIO)四多路复用IO(IOmultiplexing)五异步IO(A......
  • tp5模型的定义
    1<?php2namespaceapp\index\model;34usethink\Model;56classUserextendsModel7{8}先定义一个模型类在database把表的前缀改了namespaceapp\ind......
  • 关于Java数据结构转储(本文适合初学者)
    有时候想往mysql或者redis数据库存点数据结构。尤其是redis,尽量把大块数据打包存起来,减少set和get数据次数。再说远点,对分布式数据同步也是有很大的好处。下面简单介......
  • 港队系列算法、数据结构
    写在前面这两个东西其实并没有什么联系,但是因为都是由@dd_d首创的,所以写在一起。Update:不想新开博客了,所以以后dd_d有什么新发明就直接在这里更新了。港队线段......
  • js数据结构与算法-队列的实现
    和栈的实现相似,但是这里使用对象的方式,对象的key是数字的实现,类似数组。/***队列*/classQueue{#count=0;//队列最大数量#lowestCount=0;//目前......
  • kubernetes网络模型
    Overview本文将探讨Kubernetes中的网络模型,以及对各种网络模型进行分析。UnderlayNetworkModel什么是UnderlayNetwork底层网络UnderlayNetwork顾名思义是指网络......
  • Java常见的8种数据结构
    一、数组、链表、哈希表;队列、栈 1.数组: 2.链表: 3.哈希表: 4.队列:先进先出 5.栈:先进后出数据结构优点缺点数组查找快增删慢链表增删快查找慢哈......
  • 借助HSDB查看Java类对应的klass模型
    问题一:Java的每个类被加载到JVM中,他们对应的C++类是什么?答:klass模型问题二:在JDK8中,Java类存储在方法区还是堆区?普通的Java类,在JVM中对应的C++类是InstanceKlass,存储......
  • ECharts 添加渐变颜色和去除点位
    option={title:{text:'折线图颜色渐变'},tooltip:{trigger:'axis',axisPointer:{type:'cross',......
  • 基于C++的OpenGL 14 之模型加载
    1.引言本文基于C++语言,描述OpenGL的模型加载前置知识可参考:基于C++的OpenGL13之Mesh-当时明月在曾照彩云归-博客园(cnblogs.com)笔者这里不过多描述每个名词......