模拟赛 drinks 题解

这道题的核心思路在于把多个元素的集合转化为最多3个元素的集合,然后再通过偏序问题常用方法得到答案。

首先对于任何一个集合,丢掉一个不对答案产生贡献(abc都比其它的小)的元素不会对答案造成影响。因此我们对每一种集合都只保留能够产生贡献即至少有一个(a/b/c)是最大值的元素。

那么任何一个集合都最多只有三个元素了。

我们考虑计算这些合法集合的个数,也就是答案了。

一个元素很简单:直接n个。

两个元素也很简单:\(C_n^2-\)不合法方案数。不合法方案即有一个元素没有任何用处,也就是需要计算一下对于每一个元素其“完全支配的点的个数”然后全部加起来 (即\(a_i<a_j,b_i<b_j,c_i<c_j\)),三维偏序的裸问题。

三个元素也不算难:还是总的减去不合法的。总方案数为\(C_n^3\),再减去有两个元素都没有用的情况:即若刚才计算出某个点能支配x个点,那么这里不合法方案就有\(C_x^2\)个,把每个点这样的答案都加起来即可。

然后再减去

上一篇:Linux 安装FastDFS<准备>(使用Mac远程访问)


下一篇:LCP 18. 早餐组合