其他分享
首页 > 其他分享> > DTOJ #5858. 排队 题解

DTOJ #5858. 排队 题解

作者:互联网

可以先考虑什么情况下两个人会讲话。

手模一下发现是逆序对。

我们可以考虑对于每个人建一个点,逆序对连一条边,最后即求整张图的最大独立集和必在最大独立集中的点。

然后发现不可做。

所以我们考虑什么情况下两个人不会讲话。

手模一下发现是顺序对。

所以就变成了求 LIS。

显然有各种 \(O(n\log n)\) 的做法。

问题是要怎么求必在 LIS 中的数。

一个数字 \(k\) 必在 LIS 中,显然要满足下面两个条件:

  1. 可以从 \(k\) 不断转移到 LIS。我们设它在 LIS 中充当第 \(i\) 个。
  2. 对于每种 LIS,都只有 \(k\) 能充当第 \(i\) 个。

对于第二个条件,如果能搞出每个数字是否一定能转移到 LIS,且它充当第几个,显然桶一下就做完了。

考虑什么情况下能转移到 LIS。

我们记 f[i] 表示从左往右以 \(i\) 结尾的 LIS 长度,g[i] 表示从右往左以 \(i\) 结尾的 LDS 长度。

f[i] + g[i] == ans + 1 时,显然 \(i\) 必在 LIS 上。做完了。

标签:手模,必在,题解,显然,LIS,DTOJ,5858,充当,逆序
来源: https://www.cnblogs.com/lingfunny/p/16342399.html