题解 P8099 [USACO22JAN] Minimizing Haybales P

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

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

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

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

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

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

posted @   Little09  阅读(133)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示