首页 > 其他分享 >片集 - 数据结构 - 1

片集 - 数据结构 - 1

时间:2024-07-22 20:19:22浏览次数:17  
标签:连通 01 个数 片集 最小值 111 区间 数据结构

欢迎来看 “片” (的简介)

由于-\(看片\)-生涯转瞬即逝,于是我选择对“\(片\)”进行一定的总结:

相信你一定看懂了

由于开始的时间有一点晚,就姑且认为我以后会慢慢补充吧......

\(CF1270H\) \(Number\) \(of\) \(Components\)

解:线段树
首先我们可以发现连通块都是以区间的形式存在的
所以如果我们把一个值设为基准,大于它的是 \(1\),小于它的是\(0\)
如果有其中一个点不与后者形成连通块就会有形如:
\(111……111……1100……000……000\)
于是我们只需要为护对于每个基准数,它所形成的零一串有几个 \(10\)
这要形式的区间,当它有一个的时候就说明它能形成新的连通块
因此只需要维护有多是个 \(1\) 即可,现在人为将 \(0\) 的位置设为极大值
这样对于任何数而它的 \(10\) 个数一定大于等于 \(1\),所以 \(1\) 是最小值
这时候维护最小值和最小值的个数就可以了

so……
为啥不能直接维护区间 \(1\) 的个数
因为主席树不好写\(????????????????????????????????????????????????????????\)

\(WOPSIM\) 吧

maojun:这东西没那么容易,“哦,我知道你在说什么了,但是这个东西应该叫做“兔队线段树”,如果你不这样的话可能要用类似楼房重建的做法 \(log^2\)”

fine…………………………………………………………

上面只是目标,下面是具体实现思路
除此以外,我们还有一个重要的发现,对于两个 \(a[i]\), \(a[i\pm 1]\) 是只能
它们作为基准是只会对 \([min(a[i],a[i \pm 1]),max(a[i],a[i \pm1]))\)有影响的
--------这里为什么不用考虑顺序呢?-------
这是因为开头和结尾有极大值和极小值,所以,对于 \(01\) 的情况,由于开头是 \(1\), 结尾是 \(0\), 所以对于这种非法情况,最后肯定会排除,因为它们构成了新的 \(01\)

啊哈,于是修改操作就显而易见了,把区间内的智障加一就行了!!!

标签:连通,01,个数,片集,最小值,111,区间,数据结构
From: https://www.cnblogs.com/Aaron-Yao-Aloe/p/18316812

相关文章

  • 片集 - 字符串 - 1
    欢迎来看“片”(的简介)由于-\(看片\)-生涯转瞬即逝,于是我选择对“\(片\)”进行一定的总结:相信你一定看懂了由于开始的时间有一点晚,就姑且认为我以后会慢慢补充吧......字典树Trie\(P8306\)\(【模板】\)\(字典树\)解:字典树要不是因为颓废,我早就把这个过了非常简单,就是......
  • 7.22数据结构
    笔记链表一.链表的引入1.1总结顺序表的优缺点    1)优点:能够直接通过下表进行定位元素,访问效率高,对元素进行查找修改比较快    2)不足:插入和删除元素需要移动大量的元素,效率较低    3)缺点:存储数据元素有上限,当达到MAX后,就不能再添加元素了、1.2链......
  • 【数据结构】:链表实现洗牌功能
    此操作包含的基本功能有:组牌:组建52张扑克牌四种花色:“♥️”,“♠️”,“⬛️”,“♣️”每种花色13张牌:1~13洗牌:将52张扑克牌打乱顺序发牌:给三个人每人发5张牌扩展功能:清牌:将每人手中牌按照面值进行从大到小排序Card类在此类中,我们将完成对每一张牌的构造类......
  • 数据结构与算法总结——线性表
    目录2线性表2.1线性表的定义2.2线性表的基本操作2.2顺序表2.2.1顺序表的定义2.2.2顺序表的基本操作2.3链式表2.3.1链表的定义2.3.2链表的分类2.3.3单向链表2.3.3.1结点设计2.3.3.2链表的初始化2.3.3.3数据的插入2.3.3.4数据的删除2.3.3.5销毁链......
  • 手撕数据结构01--单链表(附源码)
    目录1.链表的概念和结构1.1链表的概念1.2单链表结构2.实现单链表2.1节点定义2.2链表功能2.3 创建节点2.4尾插2.5头插2.6打印2.7尾删2.8头删2.9查找2.10指定位置插入2.11指定位置之后插入2.12删除pos节点2.13删除pos之后的节点2.14销毁链表......
  • 01-复杂度3 二分查找 陈越、何钦铭数据结构
    题目可以满分通过的答案:`PositionBinarySearch(ListL,ElementTypeX){Positionleft=1;Positionright=L->Last;while(left<=right){Positioncenter=(left+right)/2;if(L->Data[center]>X){right=center-1;}elseif(L->Data......
  • 数据结构-C语言-排序(3)
            代码位置:test-c-2024:对C语言习题代码的练习(gitee.com)一、前言:1.1-排序定义:        排序就是将一组杂乱无章的数据按照一定的规律(升序或降序)组织起来。(注:我们这里的排序采用的都为升序)1.2-排序分类:常见的排序算法:插入排序a. 直接插......
  • 数据结构:基础概念
    一、相关概念概念相互之间存在一种或多种特定关系的数据元素的集合。逻辑结构集合:所有数据在同一个集合中,关系平等。线性:数据和数据之间是一对一的关系树: 一对多图:多对多物理结构(在内存当中的存储关系)顺序存储:数据存放在连续的存储单位中(数组),逻辑关系和物理关......
  • 数据结构与算法从淬体到元婴day04之堆
    堆堆的定义堆是一种特殊的完全二叉树结构,其每个节点的值都遵循一定的堆属性。堆在物理上是通过数组实现的,逻辑上则表现为树形结构。堆的性质堆总是一棵完全二叉树。堆中某个节点的值总是不大于(最大堆)或不小于(最小堆)其父节点的值。将根节点最大的堆称为最大堆或大根堆,根节点......
  • Redis底层数据结构-简单动态字符串SDS
    简单动态字符串(simpledynamicstring,SDS)。Redis没有直接使用C语言传统的字符串,而是自己构建了一种简单动态字符串(SDS)的抽象类型。C字符串只会作为字符串字面量(stringliteral)用在一些无须对字符串值进行修改的地方。实现sds.h/sdshdrstruct__attribute__((__packed__)......