其他分享
首页 > 其他分享> > 题解 P8099 [USACO22JAN] Minimizing Haybales P

题解 P8099 [USACO22JAN] Minimizing Haybales P

作者:互联网

提供一个无脑做法。是目前最劣解……

考虑两个草堆 \(x,y\) 若满足 \(x<y\) 且 \(|h_x-h_y|>K\),那么显然无论怎么交换 \(x\) 永远在 \(y\) 前面。因此我们对于每一个这样的 \(x,y\),从 \(x\) 向 \(y\) 连边。

答案应该是建出的图的最小字典序(权值是 \(h\))的拓扑序。这样很明显是 \(n^2\) 的算法,我们考虑优化建图。

考虑绝对值拆开。考虑按照 \(h\) 的大小依次把每个点加入线段树,于是对于 \(y\) 这个点加边的时候,只要考虑前面某棵线段树(满足所有 \(h_i<h_y-K\))的区间 \([1,y]\) 加边就行了。可以用 lower_bound 找到这棵线段树。

这里我就写了主席树。当然由于绝对值,反过来也要跑一遍。于是建完图跑一下拓扑序就行了。

时间复杂度应当是 \(O(n\log n)\) 的,但是常数似乎巨大。

标签:无脑,Haybales,题解,线段,Minimizing,绝对值,建出,考虑,拓扑
来源: https://www.cnblogs.com/irty/p/15863617.html