DTOJ #5858. 排队 题解
作者:互联网
可以先考虑什么情况下两个人会讲话。
手模一下发现是逆序对。
我们可以考虑对于每个人建一个点,逆序对连一条边,最后即求整张图的最大独立集和必在最大独立集中的点。
然后发现不可做。
所以我们考虑什么情况下两个人不会讲话。
手模一下发现是顺序对。
所以就变成了求 LIS。
显然有各种 \(O(n\log n)\) 的做法。
问题是要怎么求必在 LIS 中的数。
一个数字 \(k\) 必在 LIS 中,显然要满足下面两个条件:
- 可以从 \(k\) 不断转移到 LIS。我们设它在 LIS 中充当第 \(i\) 个。
- 对于每种 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