CF643F Bears and Juice
感觉这个从信息的角度去考虑比较高妙。
首先取 \(p=\min(p,n-1)\)。
我们来考虑每个桶对应喝的熊,这样会有一个长度为 \(n\) 的数组,假设有 \(t\) 天,那么每个位置会写一个 \([1,t+1]\) 范围内的数,表示这头熊在第几天喝了这桶酒,如果是 \(t+1\) 表示没喝。
如果两个桶对应的这样的数组相同,那么显然不能区分这两个桶,因此每个桶所对应的这样的数组是两两不同的。其次对于每个桶,容易构造出这样的方案,使得每头熊在对应的时间喝了这桶酒。因此最大的桶数就是:
\[\sum\limits_{i=0}^{p} {n\choose i} t^i
\]
,对于每个 \(t\) 暴力计算即可,\({n\choose i}\) 可以暴力预处理出来,时间复杂度 \(O(pq+p^3\log n)\)。