04 2018 档案

摘要:题目:洛谷P3960、Vijos P2033。 题目大意: 有一个$n\times m$的方阵,第$i$行第$j$列的人的编号是$(i-1)\times m+j$。 现在有$q$个出列操作,每次让一个人出列,然后让这个人所在行向左看齐,再让最后一列向前看齐,最后让这个人站到第$n$行第$m$列的位置 阅读全文
posted @ 2018-04-22 16:41 Mrsrz 阅读(319) 评论(0) 推荐(0)
摘要:题目大意:给你n个小根堆,每个堆初始有一个元素。有两个操作:1. 把第x个数和第y个数所在的堆合并(如果第x个数或第y个数已经被删除or它们已经在同一个堆内则忽略)2. 输出第x个数所在堆的堆顶元素,并将这个堆顶元素弹出堆(如果第x个数不存在则输出-1)如果第$a_i$个数与第$a_j$个数相同,则 阅读全文
posted @ 2018-04-19 18:50 Mrsrz 阅读(257) 评论(0) 推荐(0)
摘要:题目:BZOJ1500、洛谷P2042、Vijos P1835、codevs1758。 题目大意:给你一个数列,实现以下操作。 解题思路:非旋Treap维护数列即可。前面5个都是基本的平衡树序列操作(第5个维护一个区间和即可)。第6个要求最大子段和,则我们需要维护以当前节点为子树的子段和,当前子树的 阅读全文
posted @ 2018-04-18 18:11 Mrsrz 阅读(277) 评论(0) 推荐(0)
摘要:题目大意:您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作(对于各个以往的历史版本):1. 插入x数2. 删除x数(若有多个相同的数,因只删除一个,如果没有请忽略该操作)3. 查询x数的排名(排名定义为比当前数小的数的个数+1。若有多个相同的数,因输出最小的排名)4. 查询 阅读全文
posted @ 2018-04-16 19:13 Mrsrz 阅读(174) 评论(0) 推荐(0)
摘要:题目:洛谷P4008、BZOJ1507。 题目大意:一堆操作。1. 光标移动到指定位置2. 在光标后插入一串字符3. 在光标后删除一串字符4. 光标前移5. 光标后移6. 输出光标后的一串字符解题思路:非旋Treap即可,插入时一个一个字符插也没什么问题,开O2就可以过(BZOJ过不去)。 C++ 阅读全文
posted @ 2018-04-13 14:04 Mrsrz 阅读(301) 评论(0) 推荐(0)
摘要:题目:洛谷P2596、BZOJ1861、codevs1514。 题目大意:给你一个数列(元素各不相同),有5个操作:1. 把一个数提到最前面。2. 把一个数提到最后面。3. 把一个数和它前面/后面/自己(雾)交换。4. 询问一个元素排第几。5. 询问第X个元素的值。 解题思路:维护一棵非旋Treap 阅读全文
posted @ 2018-04-09 20:14 Mrsrz 阅读(192) 评论(0) 推荐(0)
摘要:题目:洛谷3313、BZOJ3531。 题目大意:给你一棵树,每个点有一个分类和一个值。有四种操作:1. 修改某个点的分类2. 修改某个点的值3. 查询两个分类相同的点的最短路上,与这两个点分类相同的所有点的值的和4. 查询两个分类相同的点的最短路上,与这两个点分类相同的所有点的值的最大值 解题思路 阅读全文
posted @ 2018-04-02 20:20 Mrsrz 阅读(128) 评论(0) 推荐(0)
摘要:题目:洛谷P1903、BZOJ2120。 题目大意:给你一列数,有两种操作:1. 询问区间$[L, R]$内不同数出现的个数。2. 单点修改。 解题思路:带修莫队。仍然运用分块思路,加了一个修改时间而已。所以以$L$所在的块为第一关键字,$R$所在的块为第二关键字,修改时间为第三关键字排序即可。 C 阅读全文
posted @ 2018-04-01 20:19 Mrsrz 阅读(332) 评论(0) 推荐(0)