Time Limit: 6 Sec Memory Limit: 128 MB
Submit: 73 Solved: 14
Description
Input
多组输入数据。
每组数据:
第一行两个整数n,r(1 <= r <= n <= 1000000)。
第二行r个不同的整数表示:集合S的一个r子集。
Output
每组数据输出一个整数表示有多少r子集小于给定的r子集。结果mod 1000000007(1e9 + 7)。
Sample Input
3 2 2 3 3 1 2
Sample Output
2 1
HINT
Source
----------------------------------------------------------------------------------------------
Solution:
对于\(S=\{1, 2, ..., n\}\)的两个r子集\(A, B,B<A\)的条件是只属于$A$或只属于$B$的元素中最小的那个元素$x$属于$B$。
因此我们可以枚举$x$,$B$中小于$x$的元素也在$A$中,大于$x$的元素可以在$(x, n]$上任意选取。
设$A$的元素为:
$1\le a_{1}<a_{2}<a_{3}<\dots<a_{r}\le n$
另外设$a_{0}=0$
时间: 2024-10-10 03:11:35