[NOIP2017]列队

题目链接

NOIP2017真的是不按常理出牌:
1、数学题不在Day2T1
2、一道水题一道细节极多的模拟题一道不知道怎么形容的题(小凯的疑惑)(因为我太菜了)
3、3道大火题

当时看到列队这题是毫无头绪的,因为数据大得让你存都存不下,于是果断打了个30分暴力(如果打个离散化还能多骗20分)。
蓦然回首,豁然开朗。

思考可知,一个人出列影响的只是当前一行和最后一列,于是,我们只需要对每一行和最后一列分别用数据结构维护,这个数据结构要支持
1、查询并删除第$k$个数。
2、在末尾插入一个数。
若能维护这些,设每次操作的位置为$(x,y)$,那我们只需要把第$x$行第$y$个数删除并插入到最后一列的末尾去,然后把最后一列第$x$个数删除并插入到第$x$行的末尾就行了。

接下来考虑用什么数据结构。

$Splay$显然是支持这些操作的(事实上几乎所有平衡树都支持,然而我只会常数巨大的$Splay$)

猜你喜欢

转载自www.cnblogs.com/Qihoo360/p/9628656.html