P3960 列队】的更多相关文章

P3960 列队 题目描述 \(Sylvia\)是一个热爱学习的女♂孩子. 前段时间,\(Sylvia\)参加了学校的军训.众所周知,军训的时候需要站方阵. \(Sylvia\)所在的方阵中有\(n \times m\)名学生,方阵的行数为\(n\),列数为\(m\). 为了便于管理,教官在训练开始时,按照从前到后,从左到右的顺序给方阵中 的学生从\(1\)到\(n \times m\)编上了号码(参见后面的样例).即:初始时,第\(i\)行第\(j\)列 的学生的编号是\((i-1)\time…
P3960 列队 题意 题目描述 Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia所在的方阵中有\(n \times m\)名学生,方阵的行数为\(n\),列数为\(m\). 为了便于管理,教官在训练开始时,按照从前到后,从左到右的顺序给方阵中的学生从\(1\)到\(n \times m\)编上了号码(参见后面的样例).即:初始时,第\(i\)行第\(j\)列的学生的编号是\((i-1) \times m + j\)…
https://www.luogu.org/problemnew/show/P3960 树状数组预处理之后直接搞就可以了,也不是很好解释,反正就是一个模拟过程的暴力用树状数组维护,还挺巧妙的. 我为什么考场上想不出来嘤嘤嘤 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #include<vector>…
https://www.luogu.org/problemnew/show/P3960 常数超大的treap #pragma GCC optimize("Ofast") #include<cstdio> #include<algorithm> #include<cstring> #include<queue> #include<vector> using namespace std; #define fi first #def…
题目描述 Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia 所在的方阵中有 n \times mn×m 名学生,方阵的行数为 nn ,列数为 mm . 为了便于管理,教官在训练开始时,按照从前到后,从左到右的顺序给方阵中 的学生从 1 到 n \times mn×m 编上了号码(参见后面的样例).即:初始时,第 ii 行第 jj 列 的学生的编号是 (i-1)\times m + j(i−1)×m+j . 然而在练习…
传送门 因为\(Splay\)可以\(O(logn)\)维护区间,所以直接对每一行维护第一个元素到倒数第二个元素的\(Splay\),最后一列维护一个\(Splay\),每次把选出来的点删掉,然后把那一行对应的在最后一列\(Splay\)的点接在这一行后面,然后把选出来的点接在最后一列最后 注意这里要动态开点,即一个点代表一段区间,每次询问再拆开所以我大力分类讨论,写了好长好久qwq #include<bits/stdc++.h> #define LL long long #define il…
正解:动态开点线段树 解题报告: 传送门! 因为最近学主席树的时候顺便get到了动态开点线段树?刚好想起来很久很久以前就想做结果一直麻油做的这题,,,所以就做下好了QAQ 然后说下,这题有很多种方法,我目前是先只写个最傻逼的方法,等学了splay什么的再来upd一下QAQ(这题好像有,线段树.树状数组.splay等各种方法,我可能都会写只要我麻油咕QAQ 然后就直接进入正题QAQ 首先其实要知道动态开点线段树和线段树思想什么的都是一样儿的,只是实现方法有一点儿区别(就是动态开点线段树节省点儿空间…
洛谷题目传送门 最弱的Splay...... 暴力模拟30分(NOIP2017实际得分,因为那时连Splay都不会)...... 发现只是一个点从序列里搬到了另一个位置,其它点的相对位置都没变,可以想到维护每一行的前\(m-1\)列的平衡树,还有最后一列的平衡树.但是如果对所有点都开一个Splay,因为MLE的问题,只能获得60分...... 因为询问次数只有\(O(N)\)级别,可以发现操作完之后还有很多行的某一些区间是连续的区间.考虑每个点对应一段区间,当某操作使得一个连续区间被破坏掉的时候…
这是NOIP 2017最后一道题 不知道这道题有没有人代码写的和我一样麻烦. Solution 30分暴力 维护每行每列的元素. 每次删除一个元素的时候, 需要修改一行一列 因此复杂度上界\(O(nmq)\). 50分链表 因为查询操作比较少 然后又需要支持快速删除一个数的操作. 显然可以用链表来处理. 具体一点就似乎 70分线段树 这20分的部分分来自于队伍只有一行的情况. 这个做法是比较重要的吧! 应该是100分做法的基础. 用线段树维护队列前m-1个位置. 这个位置有人记为1, 没人记为0…
题意 题目链接 Sol 看不懂splay..,看不懂树状数组... 只会暴力动态开节点线段树 观察之后不难发现,我们对于行和列需要支持的操作都是相同的:找到第\(k\)大的元素并删除,在末尾插入一个元素 这样我们可以维护\(n+1\)棵线段树(对列单独建一棵) 每次操作的时候,如果\(y_i = m\),那么只对列所在的线段树进行操作 否则,首先在第\(x_i\)棵线段树中找到第\(y_i\)大的元素并删除,在列所在的线段树中找到需要插入的元素并记录下来. 然后再删除列中对应的元素 当然,还有许…