首页 > 其他分享 >NOI 2022 众数

NOI 2022 众数

时间:2022-08-30 00:44:51浏览次数:106  
标签:deque NOI 线段 合并 2022 众数 序列 rm

1.前言

首先是:关于 \(\rm deque\) ,他死了但没有完全死。

然后是这个大样例说实话有点离谱,最初我在写 \(75\ \rm pts\) 部分分的时候,我动态开点线段树的 \(\rm insert\) ,没有处理好可能会有点被重复使用。我当时没意识到这个问题,就在操作四的时候人为对两个序列做了个启发式合并(不是线段树合并自带的启发式合并),再加上我当时魔改了线段树合并,就莫名其妙的把大样例过了,然后交上去 #11 这个点竟然也过了。离谱,太离谱了!

2.题解

首先我们先解决对正解比较有用的性质 \(C\) 。

对于绝对众数有一个比较简单的做法:摩尔投票。这个东西可以线性的求出一个序列的绝对众数,且支持合并。那么我们对每一个序列维护其摩尔投票的结果,然后询问时把所有序列的结果合并起来即可。

但是摩尔投票只能处理有绝对众数的序列,所以我们在修改元素值,合并序列的时要验证当前摩尔投票结果是否为绝对众数。验证的时候需要知道当前数一共出现了多少次,所以还需要一个权值线段树来维护每个数出现的次数。以上写起来是不难的,值得注意的是摩尔投票的合并,还是有一点小细节的。

我们再来考虑正解。

现在多了一个删除操作,我们发现这对两个东西有影响。一是数列的摩尔投票结果,二是操作四中合并序列的方法。

对于前者,我们在做动态开点线段树的时候充分利用非叶子节点,统计出来序列的众数出现次数,然后再线段树上二分找到众数是什么。

对于后者,我们要求合并是有顺序的,那么我们可以对序列做启发式合并。这里我们需要一个能访问序列开头元素,结尾元素的数据结构,比较好象的应该就是 \(\rm deque\) ,其他的还有 \(\rm list\) 等。

可惜的是,如果你在程序里面开了 \(1e6\) 个 \(\rm deque\) 的话,很遗憾,你会获得 \(0\) 分的好成绩。原因是你会 \(MLE\) ,\(\rm deque\) 会占用大量的内存(即使它是空的) 。 但事实上,\(\rm deque\) 确实可以,因为我们做的是启发式合并,所以只需要开一半的 \(\rm deque\) 即 \(5e5\) 个,这样就可以卡过去了。但是,安全起见,写 \(\rm list\) 一定比写 \(\rm deque\) 优,所以可以认为 \(\rm deque\) 已经死了。

复杂度:\(\mathcal O(C_m\log C_m)\)

代码:Link

标签:deque,NOI,线段,合并,2022,众数,序列,rm
From: https://www.cnblogs.com/Vitheon/p/16637918.html

相关文章

  • NOI2022 游记
    全体目光向我看齐,我宣布个事:我是**!!!这是一位只会暴力还把暴力写挂的菜狗。Day-8按照防疫要求,全体成员要保证在8月13日及以前到昆山。由于本人第一次参加NOI过于激动,提前......
  • CSP2022初赛笔寄
    下面的全都不会图论存储图邻接矩阵(权矩阵)边集数组邻接表最小生成树MSTPrim(贪心)Kruskal(贪心)最短路Floyd(₯)(多源最短路APSP)Dijkstr......
  • 【2022.8.26】前端开发(5)
    学习内容概要JS获取用户输入值JS事件绑定jQuery类库jQuery常见操作内容详细JS获取用户输入普通数据(输入、选择) 标签对象.value文件数据(上传) 标签对象.......
  • 【2022.8.29】前端开发(6)
    学习内容概要jQuery更多操作(属性、样式、数据值)jQuery绑定事件jQuery简易动画效果Bootstrap页面框架内容详细筛选器方法$("#id").next()$("#id").nextAll()......
  • IOI2022
    鲶鱼塘\((\texttt{Easy}\0/3)\)设第\(i\)列的高度为\(h_i\),若\(h_{i-1}>h_i<h_{i+1}\),则可以直接令\(h_i=0\)。于是可以设\(f_{i,j}\)表示\(h_{......
  • 2022-08-29 第二小组 张晟源(JAVA WEB)
    JAVAweb一,软件架构1.c/s架构:客户端/服务器2.b/s架构:浏览器/服务器二,资源分类1.静态资源:所有用户访问后,得到的结果都是一样的(html,css,js,图片...)2.动态资源......
  • 2022-8-29第一组孙乃宇Servlet学习
    Servlet接触常见的web服务器什么是服务器:服务器:安装了服务器软件的计算机。服务器软件:接收用户的请求,处理请求,给出响应。(接请求,给响应)web服务器软件:接收用户的......
  • 2022-08-29 卢睿 学习心得
    目录1.Vue事件修饰符阻止事件的冒泡屏蔽标签默认行为触发一次对键盘按键进行修饰全局组件的注册局部组件的注册路由2.Web资源分类常见的web服务器概念:常见的服务器软件动态......
  • 2022牛客多校 第9场 C Global Positioning System(讨论+lca+树上差分)
    传送门若干条路径生成了一个无向连通图,只有所有简单回路对应的向量为\(0\)向量时合法。需要改变的边是满足这个边是所有不为\(0\)回路的交且不属于所有为\(0\)的回路。......
  • 2022-08-29 第二小组 石晓荟
    JAVAWeb01软件架构1、C/S架构:客户端/服务器--------QQ,Typora,腾讯会议。2、B/S架构:浏览器/服务器--------京东,爱奇艺,B站。资源分类静态资源:所有用户访问后,得到的......