例题:询问 $n$ 个数中无修改的区间不同数个数,不带修改(SPOJ的一道题)。

方法1:直接删

我们尝试头铁地开正常的下标主席树!

依次插入 $n$ 个数,插入第 $i$ 个数时,我们只要在把第 $i$ 个版本的主席树的第 $i$ 位 $+1$ 就可以了,表示多出一个数。

但前面与它相同的数怎么处理?

可以记录每个数上一次出现的位置,在当前版本的主席树中,给当前位 $+1$ 后,把上一次出现相同数的位置 $-1$,这样就不会被算重复了。

如果数过大,离散化一下就好了。

然后对于 $[left,right]$ 这样的区间询问,在第 $right$ 个版本的线段树上查询 $[left,right]$ 的和即可。

方法2:考虑差分思想。

如果我们保守,就换用权值主席树。

做过 $APIO 2018\space T1$ (的我)即可了解这种思路(那道题让你用判断一个区间内是否包含所有颜色,做法有些类似)。

就是你直接把主席树第 $i$ 个位置的权值 $pre$ 设为这位的数上一次出现的位置。然后查询一个区间 $[l,r]$ 的颜色数 其实就是查询区间 $[1,r]$ 有多少个 $pre$ 值 $\lt l$(直接查 $[1,r]$ 是为了方便,答案不变,但不用再写个数据结构维护)。

重点就是动态查询前缀中 有多少个数 小于一个给定数,每次在主席树的第 $r$ 个版本上查权值主席树中 有多少个数小于 $l$ 就完事了。

这两个做法都可以直接改成朴素线段树模拟+离线回答询问(每达到一个右端点就回答询问)。也就是说这里强行转化成主席树讲。

例题:一棵树,每个点都有一种颜色,每次询问以一个点为根的子树中的不同颜色数。

用 $dfs$ 序建主席树的版本 及 使用主席树的下标,然后只能用上例的方法2维护(一个点要从它的父亲的版本转移过来,定义一个数上一次出现的位置为 它在当前点的祖先中与这个数相等且离这个数所在点最近的点),查询子树 转为 查询子树对应的 $dfs$ 序区间 即可。

转载于:https://www.cnblogs.com/scx2015noip-as-php/p/10003795.html

【基本操作】主席数统计区间不同颜色个数相关推荐

  1. 【代码源 Div1 - 108】#464. 数数(主席树,区间比k小的数的个数)HDU4417

    problem solution 主席树查询区间比k小的数的个数 建树之后直接在目标区间的主席树内将 H 作为挡板递归计数. #include<bits/stdc++.h> using n ...

  2. Matlab统计图片中不同颜色小球个数

    文章目录 Matlab统计图片中不同颜色小球个数 Matlab代码 运行结果 设计算法对不同颜色小球个数进行统计 读取照片进行预处理 如何精确找出各个小球位置 确定小球位置代码 如何通过计算机识别不同 ...

  3. Just $h$-index HDU - 6278(主席树找区间大于等于k的个数)

    The hh-index of an author is the largest hh where he has at least hh papers with citations not less ...

  4. poi获取有效单元格个数_EXCEL利用SUM函数和FREQUENCY函数数组公式统计不同区间数据个数...

    EXCEL函数公式大全之利用FREQUENCY函数数组公式统计不同区间数据个数.EXCEL函数与公式在工作中使用非常的频繁,会不会使用公式直接决定了我们的工作效率,今天我们来学习一下提高我们工作效率的 ...

  5. python统计中英文字符个数-Python统计英文、中文、数字、空格等字符数

    Python统计字母.中文.数字.空格等字符数 # 统计一行字符的不同字符个数 str = input("请输入一行字符:") count1 = count2 = count3 = ...

  6. 个推数据统计产品(个数)iOS集成实践

    2019独角兽企业重金招聘Python工程师标准>>> 最近业务方给我们部门提了新的需求,希望能一站式统计APP的几项重要数据.这次我们尝试使用的是个推(之前专门做消息推送的)旗下新 ...

  7. Greedy Sequence(2019南京icpc网络预选赛)主席树求区间小于k的最大值

    题意:给出n个整数,构造s1,s2,s3-sn s1,s2,s3-sns1,s2,s3-sn,si sisi满足五个条件 1.s1[i]=i s1[i]=is1[i]=i 2.对于1<j< ...

  8. 【HDU - 4348】To the moon(主席树,区间更新)

    题干: Background  To The Moon is a independent game released in November 2011, it is a role-playing ad ...

  9. c语言学习进阶-C语言程序实现生成指定区间指定个数随机数

    ##C语言程序实现生成指定区间指定个数随机数 设计一个自动数据生成程序,能自动生成指定行数的随机整数并写入到一个文件当中,随机整数的范围可以被控制,例如控制在0 到100 间,这个程序的操作命令行参数 ...

最新文章

  1. Android开发者指南(12) —— Android Supported Media Formats
  2. 人人都是 API 设计者:我对 RESTful API、GraphQL、RPC API 的思考
  3. P3807-[模板]卢卡斯定理
  4. react中的状态机_在基于状态图的状态机上使用React的模式
  5. 【许晓笛】 EOS 智能合约案例解析(2)
  6. 循环序列模型 —— 1.3循环神经网络
  7. 多元样条函数及其应用_B样条算法(B-spline)
  8. C语言scanf跳出循环的问题
  9. 【PID优化】基于蝙蝠 粒子群 花卉授粉算法和布谷鸟搜索算法实现热交换器的PI控制器优化
  10. 等宽字体 Monospaced Font
  11. ubuntu下格式化被写保护的U盘
  12. Unity手册-Graphics -Tier
  13. SAP 移动类型详解 大全说明
  14. 磁敏感定量成像技术的基本方法和临床应用
  15. Python基础刻意练习:字典与集合
  16. 华为防火墙实战配置教程,太全了
  17. 大学生对网络直播的看法
  18. Nature | 通用医学人工智能基础模型
  19. 鲁棒优化(5):通过yalmip中uncertain命令快速各类不确定集合下的鲁棒优化
  20. PAT甲级 1081 Rational Sum 分数相加的和

热门文章

  1. Pytorch两种模型保存方式
  2. 中国地址住址五级以下
  3. LeetCode简单题之三维形体的表面积
  4. 2D池化IPoolingLayer
  5. 高精地图与自动驾驶(上)
  6. 同向逆向、多车道线检测
  7. 2021年大数据ELK(三):Lucene全文检索库介绍
  8. Python机器学习:训练Tesseract
  9. python 字符串格式化是打印不同类型更简单一些
  10. databinding 入门 知识 给TextView 赋值