本文主要是介绍DTOJ 4538. 「TJOI / HEOI2016」排序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题意
在 2016 年,佳媛姐姐喜欢上了数字序列。因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题,需要你来帮助他。
这个难题是这样子的:给出一个 $1 $ 到 n n n 的全排列,现在对这个全排列序列进行 m m m 次局部排序,排序分为两种:
- ( 0 , l , r ) (0, l, r) (0,l,r) 表示将区间 [ l , r ] [l, r] [l,r] 的数字升序排序
- ( 1 , l , r ) (1, l ,r) (1,l,r) 表示将区间 [ l , r ] [l, r] [l,r] 的数字降序排序
排序后询问第 q q q 位置上的数字。
题解
直接做不好做,考虑二分答案 x x x,判断ans是否 ≥ x \ge x ≥x,于是对于每个数,我们只关心它是否 ≥ x \ge x ≥x,于是把 ≥ x \ge x ≥x设为 1 1 1, < x <x <x的设为 0 0 0,每次排序相当于把一段区间清零,再把一段区间赋值为 1 1 1,该过程用线段树容易维护。
这篇关于DTOJ 4538. 「TJOI / HEOI2016」排序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!