首页 > 其他分享 >数据结构好题

数据结构好题

时间:2024-11-02 17:09:56浏览次数:3  
标签:blue max 最大值 好题 答案 数据结构 red

7574 -- 【6.05模拟】数据结构

分块

二次离线回滚莫队

cdq分治+扫描线

题目限制太多,考虑先消去\(y\)的限制,很容易想到将点分成\(y\le mid\)和\(y>mid\)两部分,此时上下两部分可以分开统计最大值

但是如果直接将询问扔进去又会变成\(O(nQlogn)\)的,考虑这个过程能否优化

重要性质:Red和Blue的最大值至少会被取到一个

这个易证,当\(v^{max}_{red}\)和\(v^{max}_{blue}\)出现在同一贡献区间(\(x_r<L\ \&\ x_b>R\) 或相反),那么答案肯定是\(v^{max}_{red}+v^{max}_{blue}\);如果在不同区间,那么答案就是\(max(v^{max}_{red}+v_b,v^{max}_{blue}+v_r)\),找别的数顶掉最大值一定不优

说明答案一定有最大值,我们对于两部分分别于对面的最大值拼凑,就能得到对答案有贡献的点对,为\(O(nlogn)\)级别的

最后就是对询问的回答了,对\(L,R\)求\(x_r<L\ \&\ x_b>R\)(和另一个)的点对的最大权值,发现这就是一个两维为\(x_r,x_b\)的二维数点,而且贴边界,很容易扫描线+树状数组做出来

至此整道题就解决了,时间复杂度\(O((n+Q)\log n)\)

总结

方法真的很多,建议学了之后回去试试别的做法

做法3中,如果矩形不贴边界,是否可做?

整出来了,但是莫队link

标签:blue,max,最大值,好题,答案,数据结构,red
From: https://www.cnblogs.com/zhone-lb/p/18522217

相关文章

  • 【数据结构-邻项消除】力扣1047. 删除字符串中的所有相邻重复项
    给出由小写字母组成的字符串s,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在s上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例:输入:“abbaca”输出:“ca”解释:例如,在“abbaca”中,我们可以......
  • 【数据结构】二叉树链式结构的实现
    1.前置说明    在学习二叉树的基本操作前,需先要创建一棵二叉树,然后才能学习其相关的基本操作。由于现在大家对二叉树结构掌握还不够深入,为了降低大家学习成本,此处手动快速创建一棵简单的二叉树,快速进入二叉树操作学习,等二叉树结构了解的差不多时,我们反过头再来研究......
  • 数据结构与算法(二叉树)
    鲸饮未吞海,剑气已横秋。 前言  这是我学习数据结构的第五份笔记,有关二叉树的知识。后期我会继续将数据结构知识的笔记补全。 上一期笔记有栈与列队,没看过的同学可以去看看:有关栈与列队的笔记https://blog.csdn.net/hsy1603914691/article/details/143064674?spm=10......
  • C语言数据结构之二叉树(BINARY TREE)链式存贮的简单实现
    C语言数据结构之二叉树(BINARYTREE)链式存贮的简单实现树型数据结构在应用中非常多,效率也非常好,只是结构相对复杂,理解起来有点儿难度!!!定义数据结构typedefstruct_BTreeNodeBTreeNode;struct_BTreeNode{intval;BTreeNode*lchild,*rchild;};自定义结构体数......
  • C语言数据结构之哈希表(HASHTABLE)的实现
    C语言数据结构之哈希表(HASHTABLE)的实现哈希表的每个节点保存的数据格式为key:value,其中key为字符串,根据字符串内容采用不同方法(哈希函数)生成一个无符号整型哈希码,根据表的长度,采用取余法,将数据存入表单元,如果此表单元中已存在数据,则以此表单元为链表头,向链表追加数据,这......
  • C++ 手撕--基本数据结构的简单实现
    C++面试手撕代码----基本数据结构的简单实现1.String数据结构的简单实现:#include<iostream>#include<cstring>//forstrcpystrlenmethodsusingnamespacestd;classString{private: char*data; size_tlength;public: String():data(nullptr),length(0)......
  • 数据结构杂题乱记
    由于是杂题乱记所以题目大多数不会太难。目录P2572[SCOI2010]序列操作题目内容思路代码P2572[SCOI2010]序列操作题目内容给你一个\(01\)序列,支持\(5\)种操作:0lr区间赋值为\(0\);1lr区间赋值为\(1\);2lr区间取反,即\(0\)变\(1\)、\(1\)变\(0\);3lr询......
  • 链表(数据结构)
    一.单链表1.1概念与结构再上一篇中我们讲到顺序表,但是顺序表也是有很多的问题,像申请的空间过多过少或者增容该才能不浪费空间,今天我们就来认识一个新的知识,叫做链表,链表也是线性表的一种,链表是一种物理存储结构上非连续、非顺序的存储结构,数据结构的逻辑顺序是通过链表中的......
  • Python常用数据结构
    1.列表(List)列表是Python中最灵活的数据结构之一,像个能装万物的大箱子。你可以把任何类型的对象放进来,甚至可以把列表放进列表里,真是个魔法箱!功能特性:可变:你可以随时增加、删除、修改列表中的元素。有序:元素按插入顺序排列创建和基本操作:#创建一个空列表my_list=[]......
  • 数据结构 - 散列表,三探之代码实现
    相信通过前面两章对散列表的学习,大家应该已经掌握了散列表的基础知识,今天我们就选用简单的取模方式构建散列函数,分别实现链式法和开放寻址法中的线性探测法来解决碰撞问题,而再散列法则以方法的形式分别在两种实现方法中实现。01、链式法实现1、元素定义通过前面链式......