tft每日頭條

 > 生活

 > 計數原理的簡單方法

計數原理的簡單方法

生活 更新时间:2024-11-28 19:28:34

給定一個包含N個整數的集合S={A1, A2, ... AN},以及一個給定的整數K,請計算有多少個S的子集滿足其中的最大值與最小值的和小于等于K。

例如對于S={4, 2, 5, 8}以及K=7,滿足的條件的子集有以下4個:{2}, {2, 4}, {2, 5}, {2, 4, 5}。

Input

第一行包含兩個整數N和K。

第二行包含N個整數A1, A2, ... AN。

對于30%的數據,1 <= N <= 20

對于70%的數據,1 <= N <= 1000

對于100%的數據,1 <= N <= 100000, 0 <= Ai <= 1000000000, 0 <= K <= 2000000000, A1 ~ AN 兩兩不同。

Output

輸出滿足條件的子集數目。由于答案可能非常大,你隻需要輸出答案除以1000000007的餘數。

Sample Input

Sample Output

題意:見題目描述

思路:這道題其實到現在我也沒能理解,但是有兩個結論先記下來:①:以第i個元素開頭,第j個元素結尾的集合的個數為2^(j-i-1)個(最大小值必定位于集合内,大小位于兩者之間的元素有j−i−1個,每個元素都有兩種可能性,出現/不出現)。②:以第i個元素開頭,第j以及所有x(i<x<j)結尾的集合共有2^(j-i)-1個。

舉例說明以上兩個結論: 集合 {1,2,3,4,5,6,7}

結論1:eg:i=2,j=5,集合有{2,5}、{2,3,5}、{2,4,5}、{2,3,4,5}共4個

結論2:eg:i=2,j=5,集合有{2,5}、{2,3,5}、{2,4,5}、{2,3,4,5}、{2,4}、{2,3,4}、{2,3}共7個

計數原理的簡單方法(集合計數HihoCoder-1546計數)1

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved