当前位置: 首页 > news >正文

【CDOJ 1342】郭大侠与甲铁城 【离线树状数组】

http://acm.uestc.edu.cn/#/problem/show/1342
还可以莫队、线段树+二分
首先把区间保存下来,按右端点升序排序,然后我们建树状数组,同时也开一个last数组记录所有颜色的最后的出现位置,初始为0,即没有出现,

然后我们对于每个r,就从1(或上次更新到的位置)更新到这个r,然后我们更新时,对于这个点上的颜色,如果之前没有出现过,我们就在树状数组上把这个点+1,如果之前出现过,我们就把之前的那个位置-1,然后在新的位置上+1,同时更新last数组。

然后查询时就是,[1,r]-[1,l-1]。

为什么能这样呢,首先我们想如果我们不把区间排序就这样做的结果,如果我们只记录每个颜色最后出现的位置的话,可能就会出现,我查询的是前面的区间,这个颜色在之前出现过,我们却没有记录,所以出现的问题就是会对前面的查询有影响,但是对后面的查询没有影响,所以我们排序就可做

首先我们把区间排序之后,首先对于我们查询的最小的那个r,然后我们就从1更新到r,我们只记录最后一个位置,这样肯定是没有问题的,

然后后面对于下一个r,我们之前的查询已经得到结果了,所以我们可以相当于没有之前的查询,我们再继续往下更新,然后类似的方式查询,也是没问题的,r从小到大查,我们的这个做法就是正确的。


                

相关文章:

  • 【CDOJ 1350】卿学姐失恋了Ⅱ
  • 【CDOJ】柱爷与咸鱼神功
  • 【CDOJ 1357】柱爷与最大区间和
  • 【CDOJ 1323】柱爷的下凡
  • 【CDOJ 1321】柱爷的恋爱
  • 【CDOJ 1355】柱爷与三叉戟不得不说的故事 【状压DP+子集枚举】
  • [NOIP2011DAY1P1]铺地毯
  • 【vijos 1116】【codevs 1038】一元三次方程求解
  • 标准C++中的string类的用法总结
  • 关于C++ string类的基本操作实验 一
  • Python中dict详解
  • Python 函数参数
  • Python高级特性之切片
  • Python 模块
  • Python 简易TCP客户端
  • SegmentFault for Android 3.0 发布
  • 分享一款快速APP功能测试工具
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • CentOS7 安装JDK
  • emacs初体验
  • Facebook AccountKit 接入的坑点
  • java概述
  • magento 货币换算
  • Netty 4.1 源代码学习:线程模型
  • PHP那些事儿
  • Redis 中的布隆过滤器
  • spring security oauth2 password授权模式
  • 基于HAProxy的高性能缓存服务器nuster
  • 聊聊redis的数据结构的应用
  • 浏览器缓存机制分析
  • 面试总结JavaScript篇
  • 排序算法学习笔记
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #考研#计算机文化知识1(局域网及网络互联)
  • $L^p$ 调和函数恒为零
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (C语言)fread与fwrite详解
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (二)pulsar安装在独立的docker中,python测试
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (十六)Flask之蓝图
  • (四)图像的%2线性拉伸
  • (学习日记)2024.01.09
  • .bashrc在哪里,alias妙用
  • .NET 5种线程安全集合
  • .NET/C# 使窗口永不获得焦点
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .NET建议使用的大小写命名原则
  • .NET框架
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • @开发者,一文搞懂什么是 C# 计时器!
  • [ Algorithm ] N次方算法 N Square 动态规划解决