首页 > 其他分享 >简单数据结构做题记录

简单数据结构做题记录

时间:2023-03-26 21:44:07浏览次数:25  
标签:度数 奇数 记录 枚举 答案 简单 mathcal 维护 数据结构

CF526F Pudding Monsters

典题,发现这本质上是一个一维问题,一个区间合法当且仅当 \(\max - \min = r - l\),枚举右端点维护左端点的变化量,用两个单调栈维护到 \(r\) 的最大最小,用线段树维护区间最小值及其个数,由于 \([r, r]\) 满足条件且 \(\max -\min - r + l\geq 0\),因此每次累加最小值个数即可。

时间复杂度 \(\mathcal O(n\log n)\)。

CF603E Pastoral Oddities

先找“每个点度数均为奇数”的充要条件,容易发现是“加入所有边后不存在奇连通块”。

证明是简单的。

充分性:显然对于每个连通块独立,随便找一个点当根求出一棵生成树,自底向上考虑每个非根的点,若儿子度数为偶数则加上其与父亲的连边,否则删去这条边,此时除了根所在连通块都满足条件,同时注意到总度数为偶数,有奇数个点的度数为奇数,必然根的度数也为奇数。

必要性:若存在奇数连通块,则要求总度数为奇数,无论怎么删去边,总度数都为奇数,显然非法。

注意到能合并就合并是最优的,因为无论是偶 + 偶,奇 + 偶,奇 + 奇都不会增加奇数个数,于是对于单次询问,可以考虑类似 Kruskal 的过程得到答案。

注意到答案单调不升,可以考虑整体二分。

注意到每次加边的变化只有当两边子树都是奇数才有用,可以直接上 LCT。

注意到若我们从后往前处理,将边集排序后维护一个指针表示当前答案,对于已经加入答案的边而言我们需要在某一时间段维护其合法范围,就可以直接线段树分治维护。

时间复杂度 \(\mathcal O(n\log n \log m)\)。

CF1446D2 Frequency Problem (Hard Version)

容易用调整法证明两个答案其中一个为全局众数,设为 \(maj\)。

暴力就是再枚举另一个元素 \(x\),将 \(x\) 看做 1,\(maj\) 看做 -1,答案就是最长的和为 0 的段。

还有一个暴力:直接枚举出现次数 \(cnt\),双指针枚举 \(maj\) 的第一次出现位置,对 \([l, r]\) 的这些数开桶记录出现次数为 \(i\) 的有多少个,当 最大值恰为 \(cnt\) 且个数 \(\geq 2\) 则存在。

结合上面两个算法,考虑根号分治,对于 \(occ_i > B\) 的数直接 \(\mathcal O(n)\) 算,否则直接枚举 \(cnt\),也可以 \(\mathcal O(n)\) 算。

时间复杂度 \(\mathcal O(n\sqrt n)\)。

CF997E Good Subsegments

CF319E Ping-Pong

标签:度数,奇数,记录,枚举,答案,简单,mathcal,维护,数据结构
From: https://www.cnblogs.com/henrici3106/p/17259644.html

相关文章

  • 实验3 简单shell的设计和实现
    Unix实验报告实验:实验3简单shell的设计和实现专业:计算机科学与技术班级:1班姓名:姚怀聿学号:229202022046322022年11月5日......
  • Android简单集成高德地图API
    首先进入高德官网  高德开放平台|高德地图API(amap.com)  注册登录完成之后创建新应用  点击之后呈现如下页面:  Key的名称随便起,主要是提交后会有一个......
  • JS 做一个简单的 Parser
    前言前些天偶然看到以前写的一份代码,注意有一段尘封的代码,被我遗忘了。这段代码是一个简单的解析器,当时是为了解析日志而做的。最初解析日志时,我只是简单的正则加上分割,写......
  • [NC 记录] CF1172D Nauuo and Portals
    在随机跳一点CF的紫题做。为什么随机一跳就是CNR。感觉这能*2900有点震撼。不过我不是也没独立做出来嘛。尝试只为行或列构造,很容易想到直接逐一交换,但是这样会破坏......
  • AutoResetEvent/ManualResetEvent 的简单理解与运用
    AutoResetEvent和ManualResetEvent只是构造函数包装器它们唯一要做的就是使用EventResetMode.AutoReset或EventResetMode.ManualReset从EventWaitHandle调用构造函数.......
  • 【数据结构基础1】时间复杂度和空间复杂度
    【数据结构基础】时间复杂度和空间复杂度算法的时间复杂度和空间复杂度【本节目标】1.算法效率2.时间复杂度3.空间复杂度4.常见时间复杂度以及复杂度oj练习数据结构指的是“......
  • 【数据结构基础2】顺序表
    前言:继【时间复杂度和空间复杂】度之后,本章我们来介绍数据结构中的顺序表和链表,若觉得文章不错,希望支持一下博主......
  • C# Autofac简单用法
    十年河东,十年河西,莫欺少年穷学无止境,精益求精新建一个控制台程序,如下 MyAutoFac项目引用NugetautofacV6.5版本新建如下接口:publicinterface动物{void......
  • 数据结构-->单链表OJ题--->讲解_03
    老铁们,现在开讲啦!!下面是本期的OJ试题:>1.给定一个带有头结点head的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。现列图式样所示:>上图只有一......
  • 数据结构(1)
    单链表#include<iostream>usingnamespacestd;constintN=1e6+10;intshuzhi[N],next_position[N];inthead,idx;//头结点下标、当前的下标voidini......