CF1696H Maximum Product?
题目描述
给定一个正整数 $k$。对于一个整数多重集 $S$,定义 $f(S)$ 如下:
- 如果 $S$ 中的元素个数小于 $k$,则 $f(S)=0$。
- 否则,$f(S)$ 等于从 $S$ 中恰好选出 $k$ 个整数所能得到的最大乘积。
更正式地,设 $|S|$ 表示 $S$ 中元素的个数。那么,
- 如果 $|S|
输入格式
输入的第一行包含两个整数 $n$ 和 $k$,其中 $n$ 表示 $A$ 的元素个数($1\le k\le n\le 600$)。
第二行包含 $n$ 个整数 $a_1,a_2,\dots,a_n$,表示 $A$ 的各个元素($-10^9\le a_i\le 10^9$)。
输出格式
输出 $\sum\limits_{B\subseteq A} f(B)$,对 $10^9+7$ 取模。
说明/提示
考虑第一个样例。根据定义有:
- $f(\varnothing)=0$
- $f(\{-1\})=0$
- $f(\{2\})=0$
- $f(\{4\})=0$
- $f(\{-1,2\})=-2$
- $f(\{-1,4\})=-4$
- $f(\{2,4\})=8$
- $f(\{-1,2,4\})=8$
所以应输出 $(0+0+0+0-2-4+8+8)\bmod (10^9+7)=10$。
在第二个样例中,注意虽然多重集由三个相同的值组成,但它仍有 $8$ 个不同的子集:$\varnothing,\{1\},\{1\},\{1\},\{1,1\},\{1,1\},\{1,1\},\{1,1,1\}$。
由 ChatGPT 4.1 翻译