CF896E Welcome home, Chtholly

对于给定一个长度为n(n<=1e5)的序列,值域范围为1e5,要求支持两类操作。

  1. 将区间[l,r]内所有大于x的数减x
  2. 查询区间[l,r]内值为x的数的个数

首先由于n和值域同阶,所以我们应该在值域上进行操作,但是这个东西不好用线段树的结构维护,因为它的修改比较独特,我们难以标记下传的方式处理。

但是我们可以使用分块暴力处理,然后因为操作一的复杂度与值域有关,我们可以看出来,因为只有减操作,所以最大值一定是单调递减的,然后我们可以做到维护值域然后复杂度就可以做到O(n*\sqrt(n)),所以我们要尽量调整块的个数尽量少,所以就不能使用线段树这样的分治结构了。

然后我们考虑复杂度,当x2<=mx的时候我们可以让块整体左移,相当于0点右移,然后只用处理O(x)的值域即可,当x2>mx时,我么可以处理O(mx-x)的值域,然后整体就是用O(x)的复杂度使得最大值减少了O(x),所以复杂度是正确的。
然后对于零散块,个数不超过O(\sqrt(n))所以可以暴力重构。

然后我们考虑一种数据结构可以做到O(1)合并,O(1)查询大小,显然可以使用并查集。

然后还有一个trick,就是我们可以单独考虑每一个块的贡献,这样可以将空间复杂度降低。

这道题维护时移动零点的trick很重要,可以实现O(1)整体移动,然后通过判断我们就可以做到O(x)处理O(x)

CF896E Welcome home, Chtholly(分块/并查集/第二分块)相关推荐

  1. CF896E Welcome home,Chtholly/[Ynoi2018]五彩斑斓的世界(并查集+第二分块)

    CF896E Welcome home,Chtholly/[Ynoi2018]五彩斑斓的世界 description solution code description 五彩斑斓的世界 CF896E ...

  2. P3247-[HNOI2016]最小公倍数【分块,并查集】

    正题 题目链接:https://www.luogu.com.cn/problem/P3247 题目大意 nnn个点mmm条边,每条边有(x,y,a,b)(x,y,a,b)(x,y,a,b).qqq次询 ...

  3. HDU - 2874 Connections between cities(并查集+LCA)

    题目链接:点击查看 题目大意:给出n个点代表城市,再给出m条边将其连接,每条边都有边权,题目保证给出的图无环,现在给出两个点,首先询问两个点是否互相连通,若可以连通,询问两点之间的距离 题目分析:判断 ...

  4. [BZOJ4537][Hnoi2016]最小公倍数 奇怪的分块+可撤销并查集

    4537: [Hnoi2016]最小公倍数 Time Limit: 40 Sec  Memory Limit: 512 MB Submit: 1474  Solved: 521 [Submit][St ...

  5. [BZOJ4537][Hnoi2016]最小公倍数(并查集+分块)

    Description 给定一张 NNN 个顶点 M" role="presentation" style="position: relative;" ...

  6. 洛谷P3247 [HNOI2016]最小公倍数 [分块,并查集]

    洛谷 思路 显然,为了达到这个最小公倍数,只能走\(a,b\)不是很大的边. 即,当前询问的是\(A,B\),那么我们只能走\(a\leq A,b\leq B\)的边. 然而,为了达到这最小公倍数,又 ...

  7. 2017百度之星程序设计大赛 - 资格赛【1001 Floyd求最小环 1002 歪解(并查集),1003 完全背包 1004 01背包 1005 打表找规律+卡特兰数】...

    度度熊保护村庄 Accepts: 13 Submissions: 488 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/3276 ...

  8. 并查集(Union-Find)

    并查集(Union-Find) 并查集(Union-Find) 1.初始化 2.查询 3.合并 4.平衡性优化,扁平化 5.按秩合并 6.路径压缩 7.代码 常用模板 [★ 547. 省份数量](ht ...

  9. 数据结构课--并查集(标号法)

    小谈并查集 并查集是什么: "并"和"查"是两个功能:"集"表示集合 解决一种把大量数据分块后查找某些数据是否是同一类的问题. 一般由fin ...

最新文章

  1. pip install 豆瓣源、清华源、阿里源、中国科技大学源
  2. 状态机在计算机中的应用
  3. SpringBoot_数据访问-JDBC自动配置原理
  4. 不定方程(质数与因数)
  5. IDEA——修改idea64.exe.vmoptions文件解决coding卡顿问题
  6. 深度学习的实用层面 —— 1.3 机器学习基础
  7. 运维组如何管理服务器资源,运维服务管理体系方案全套.doc
  8. 4固定在底部_有线鼠标之灵魂伴侣,火线竞技4号RGB鼠标线夹
  9. struts2实现文件上传
  10. AlbertTransformerEncoder
  11. input正则邮箱_javascript写一个校验邮箱的正则表达式
  12. 【php毕业设计】基于php+mysql的学生签到考勤系统设计与实现(毕业论文+程序源码)——学生签到考勤系统
  13. 服务器 虚拟软驱,virtual floppy(虚拟软驱)命令行版本
  14. 深入理解高级数据结构之红黑树
  15. 抖音很火的计算机音乐,抖音最近很火的几首背景音乐(BGM),推荐给大家很好听...
  16. java水仙花数编程_水仙花数java编程实现
  17. 【5G核心网】5GC核心网之网元NSSF
  18. 什么叫手机或设备的ID
  19. C语言在控制台上实现鼠标操作的方法
  20. 实现中英文对接翻译小程序—最终版

热门文章

  1. node中间件mysql_nodejs 中使用mysql数据有没有类似 mongoose 的中间件?
  2. 中国大学mooc慕课python语言程序设计答案_中国大学MOOC(慕课)_Python语言程序设计基础_网课答案...
  3. 视图添加字段_Odoo开发教程2-为模型添加字段
  4. 炸了!刚刚数学家获得了2020年诺贝尔物理学奖!没想到诺奖也能蝉联.......
  5. 专业学习频道,欢迎关注数锐学堂
  6. sql 多表多行模糊查询_从零开始学习SQL(五)多表查询
  7. php上传文件程序,php 文件上传程序(二款简单文件上传程序)_PHP教程
  8. 用java写注册表单_利用HTML表单标签编写一个注册页面
  9. oracle中的的instr,Oracle中instr函数使用方法
  10. mysql5.5 mysqli_php5.5.38增加mysqli扩展