首页 > 其他分享 >列队

列队

时间:2023-12-17 12:46:16浏览次数:28  
标签:询问 一行 vector 一列 编号 列队 考虑

像这种大题,我们可以先直接按正解想,如果没啥思路,就转而考虑部分分,部分分会给我们提示的

最小的部分分就不说了,纯暴力

看一下\(x_i=1\)的部分分

显然除了第一行,其他都是摆设,所以把第一行和最后一列放在一起考虑

然后就转化为了“谜一样的牛”这一道题目,时间复杂度\(O(nlogn)\)

然后考虑正解

我们刚才是单独考虑了第一行和最后一列,所以正解中也单独考虑最后一列

问题是行怎么办?我们依葫芦画瓢,也单独考虑每一行

稍微模拟一下就知道,对某一行,其他行的操作只会改变这一行最后一位人的编号(从这里也可以看出最后一列是非常特殊的,我们需要单独拿出来考虑),所以我们考虑对同一行一起处理

所以我们离线处理,将询问排序,按照\(x_i\)为第一关键字,询问编号为第二关键字,这样同一行的询问就被放在一起了

我们对同一行的询问建立一个树状数组(具体实现),对每个询问算出其真实想删除的人在数组里面的真实位置(“谜一样的牛”)

然后我们又把询问排序回去,依次考虑每个询问

在处理询问的过程中,我们用\(n\)个vector存储每一行历史上加入进来的人的编号

比如(\(m=4\))

1 2 3 4 7 5 3

表示从最开始到现在,进入过这一行的编号是以上,其中前四个是最开始的四个人(没有用实际的数据结构存储),后面三个是后面加入进来的(在vector当中),而在这个时刻,真实的队列编号可能是

1 2 7 3

或其他一些可能的情况

对当前的这个询问

如果有标记,就在最后一列上进行操作

否则考虑其询问的真实位置\(x\),如果比\(m\)小,那么就可以直接通过计算输出,否则由于没有标记,直接输出vector中第\(x-m\)个数(注意下标从\(0\)开始)

注意维护vector和最后一列即可

标签:询问,一行,vector,一列,编号,列队,考虑
From: https://www.cnblogs.com/dingxingdi/p/17908939.html

相关文章

  • 列队中对询问离线排序后如何建立树状数组
    假设\(m=5\)(注意值存储前\(m-1\)个人)注意我们并没有在方框里面填上具体编号,因为从下文就可以知道这是无关紧要的假设我们删除了第二个人绿色方框是新进来的一个人,红色斜杠表示被删除掉的(但是在代码中我们不会真正的删除这一个位置)那么如果要删除这行中的第二个人,等价于删除......
  • Vue源码学习(十二):列队处理(防抖优化,多次调用,只处理一次)
    好家伙, 本篇讲的是数据更新请求列队处理 1.一些性能问题数据更新的核心方法是watcher.updata方法实际上也就是vm._updata()方法,vm._updata()方法中的patch()方法用于将新的虚拟DOM树与旧的虚拟DOM树进行比较,并将差异更新到实际的DOM树上.这一步是非常消耗性能的 2.......
  • 列队春游题解 O(n方)
    题目前言出生镇楼思路:打个暴力先#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;namespaceTestify{inlineintread(){intf(1),x(0);charch=getchar();for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-......
  • 线程池中阻塞队列的作用?为什么是先添加列队而不是先创建最大线程?
    线程池中阻塞队列的作用:1.⼀般的队列只能保证作为⼀个有限⻓度的缓冲区,如果超出了缓冲⻓度,就⽆法保留当前的任务了,阻塞队列通过阻塞可以保留住当前想要继续⼊队的任务。2.......
  • NOIP2017Day2T3-列队
    3、列队TimeLimit:2SecMemoryLimit:512MBDescriptionSylvia是一个热爱学习的女♂孩子。前段时间,Sylvia参加了学校的军训。众所周知,军训的时候需要站方......
  • [NOIP2017 提高组] 列队
    我有病吧我挑这个题做。题意:$n,m,q\le3e5$解题思路:一眼看上去相当没有头绪。但如果仔细观察的话会发现这种操作本质上是改变某一个编号的位置,将其放在序列最后并......
  • Madoka and the Sixth-graders (全排列队列,每一个点可以向外连1条线题型+倍增法处理
    题意:Madoka的教室里有 nn 个座位,一开始,编号为 ii 的座位上坐着编号为 b_i(1\leb_i\len)bi​(1≤bi​≤n) 的同学。门外有排成一队的,编号从 n+1n+1 开始的,......
  • Java线程池 ThreadPoolExecutor 深入解析 任务列队,拒绝策略,自定义线程池工厂,线程池扩
    目录​​相关文章​​​​介绍   ​​​​ThreadPoolExecutor构造方法​​​​构造函数的参数含义如下​​​​各项介绍​​​​workQueue任务队列​​​​1.直接提交......
  • [Violet 5]列队春游
    DescriptionlinkSolution考虑对于每一个人算贡献。令\(P(i)\)表示这个人视野距离为\(i\)的概率,\(Q(i)\)表示视野距离不小于\(i\)的概率,令\(k\)表示能够阻拦......
  • P3960 NOIP2017 提高组 列队
    P3960NOIP2017提高组列队将每一行的第1到m-1个和第m列分离出来分析知这n+1个“区间”要维护弹出第k个和插入最后使用平衡树,一个区间若没有被算则用[l,r]表示(方伯伯......