トピック:
Devu Nボックスがあり、i番目のボックスがありますramiflorous愛。
Oneと花のボックスに同じ色、異なるボックスに異なる色の花。
これらのボックスからDevuは、プログラムのどのように多くの種類の合計を求めて、花の花束とMブランチを選択しました。
各色の2つの花の花束の数が同じであれば、私は2個の花が同じプログラムだと思います。
結果は、する必要があり10 。9 + 7のみを法の出力後。
入力形式
最初の行は二つの整数N及びMを含有します
2行目はNを表すスペースで区切られた整数含ま。1 、2 、... 、Nを。
出力フォーマット
出力プログラムの数を表す整数10 。9 + 7モジュロ109 + 7の結果。
データ範囲
1 ≤ N ≤ 20 1≤N≤20、
0 ≤ M ≤ 10 14 0≤M≤1014、
0 ≤ A iは≤ 10 12 0≤Ai≤1012を
サンプル入力:
3 5
1 3 2
出力例:
3
レポートの問題解決には:
ギャングのブログを参照して少し後、どのように含める排除プロセスを見つける起動しなかった、この質問の目的は、真の意味を理解することでした!
全てFiの場合は、最初のシナリオでは、何の制限はありません。
だから答えをよれば、C(S、N + S-である 1) の複数のセットの組み合わせの無数
我々は違法からの応答を減算する必要がある状況。
合法的でない場合にxi> fixi> Fi回線のです。
あいあいのXI> fixi> Fiソリューションを設定されています。
|愛| = C(S-( Fiの+ 1)、N + S-1-(FI + 1))は、
我々の以前にそれにFiの+ 1fi + 1の要素を入れに対応します。
同様|Ai⋂Aj| = C(S-( Fiの+ 1) - (FJ + 1)、N + S-1-(FI + 1) - (FJ + 1))
及び除外に従うと答えは
C (S、N + S-1 )-Σ1≤i≤n|愛| +Σ1≤i<j≤n|Ai⋂Aj| ...( 省略)
私たちは、状態によってそれぞれの状態を表す圧縮することができます。
各状態の事前の前処理には、いくつかの要素を配置する必要があります。
前回のスキャン統計が答えます。
Oの時間複雑(2NN)
ACコード:
1つの#include <ビット/ STDC ++ H> 2 使用して 名前空間STDを、 3 typedefの長い 長いLL。 4 5 のconst int型 MOD = 1E9 + 7 。 6 INTのN、LIM。 7つの LL S、ANS。 8のLL F [ 30 ]、INV [ 30 ]、和[ 1100000 ]。 9 のint NUM [ 1100000 ]。 10 LLコーム(LL N、LLのM) 11 { // 求解C(n、m)が 12 であれば(M < 0 ) 13 リターン 0 ; 14 LLのRET = 1 。 15 のために(LL I =のM + 1 ; I ++; iが<= N ) 16 RET = RET *(I%のMOD)%MOD。// N!/メートル! 17 のために(int型 I = 1 ; I <= NM; I ++ ) 18 RET = RET * INV [I]%MOD。// (nm)を! 19 リターンRET; 20 } 21 22 のint main()の 23 { 24 CIN >> N >> S。// N个盒子、挑选の朵花 25 のための(int型I = 0 ; I <nで、Iは++ ) 26は、 CIN >> F [I]; // ボックス中のNの入力の花の数 27 [INVを1 ] = 1 ; 28 のために(INT I = 2 ; Iは= N + < 1。 ; I ++ ) 29 INV [I]は=(INV [I MODの%] *(MOD-MOD / I))MOD%; // 逆元解決する魔法のプレイテーブル 30 リム=を(1 << N-) - 1。 ; / / バイナリ列挙、容易撥容量 31である ため(int型 I = 0 ; I <=イム; Iは++ ) 32 { 33である ため(のInt J = 0 ; J <N-; J ++ ) 34である { 35 IF(I&(1 << J)) 36 { 37 [ SUM [I] = F + [J] + 1 ; // 事前は+ 1番目Fiが入れ素子 38れる NUM [I] ++; // 出現数におけるタグ 39 } 40 } 41 } // 、1,2から、すべての状態を処理された- > N- 42である ため(int型私は= 0 ; Iは<=イム; I ++ ) 43は 、{ 44は IF(NUM [I]%2 ) 45 のANS =(ANS-櫛(S + N- 1 -sum [i]は、S-和[I])+ MOD)%MOD。 46 他の 47 のANS =(ANS +櫛(S + N- 1 -sum [i]は、S-和[I]))%MOD。 48 } 49 COUT << ANS << ENDL。 50 }