[BZOJ2839]:カウント数を設定

トピックポータル


件名の説明:

Nは、要素が持っている設定2つのN今、この中に、異なる部分集合(空集合を含む)を2 Nそれらの交点であるように、(少なくとも1つ)に取り組の複数の集合の要素数K得、法のプログラムの数、応答モード十億七(ああ〜は素数です)


入力フォーマット:

ライン二つの整数N、K


出力フォーマット:

行動の答え。


例:

サンプル入力:

3 2

出力例:

6


サンプル説明:

元のセットであると仮定{A、B、C}

条件のための溶液が満たされた{AB、ABC}、{AC、ABC}、{BC、ABC}、{AB}、AC {}、{} BC


 

データ範囲とヒント:

以下のための100%のデータの、1≤N≤1 6。 ; 0≤k≤n


ソリューション:

この質問は、なぜ私に聞かないで、数学とインクルージョン排除の組み合わせを見てみたいですなぜ私は知りません。

良いのペア - あなたはとてもかわいいので、......そして......

実際に、私はあなたが1秒どのようなアルゴリズムを考えることができない場合は質問のこのペアは......コレクションは、および、インクルージョンに出て何と除外はそれについて、基本的に包含と除外の個人的な感情だと思うものを感じます。

とにかく、あなたは(失わないではないこと、および除外を獲得するあなたは、いや、いや、あなたが最も神聖だしないので)を。

言葉改革ターンは(実際には、〜のちょうどナンセンスペアではありません):

彼は非常にそれについて考えて行く組合せ論に出て行くことに専用されているので、最初は、数学の組み合わせです。

明らかに、問題は、最初に変換することができ、Nに選択された数のk番目、次いでその交差点が空き缶になるように、番号の残りの部分集合の任意の数を選択します。

この時間は、答えは:ANS =(数字の束は、私がどのくらいかわからない)C×(N、K)

その後、番号を見つけるのは難しいようで、彼らが作るだろう「私は、どのくらいかわからない」2 (NK)のセットを、あなたは、私はあなたがお金を持っていると思い、彼らが交差しないように、これらのコレクションの中から選択する必要があり、その後、あなた自身が、数百年が多分それは完全に考慮することができる凍結、それは最初に走ったことができますか?言うのは難しい〜

そして、明らかにあなたは何をするか、これを行うことはできませんか?

私はと除外があると言います。

その後、我々は彼らの交差点がある考える私は、(i = [K、N - ]、i∈N*)

n個の i番目の要素から選択される元素、残りNI要素が構成されてもよい2 (NI)の異なるコレクション、これらのセットが存在する2 (2 ^(NI)) -1組み合わせは、-1であります我々は何もオプションを行うことはできませんので。

プログラム番号は、(C(N、I)C×(I、K)× 2 )(2 ^(Ni)の -1

今回は我々の偉大な包含と除外を検討すべきである、とキー・ジアはさらにカットすることができます。


 

コードの時間:

#include<bits/stdc++.h>
using namespace std;
long long n,k;
long long ans;
long long jc[1000005],inv[1000005];
long long qpow(long long x,long long y,long long mod)//快速幂
{
	long long ans=1;
	while(y)
	{
		if(y%2)ans=(ans*x)%mod;
		y>>=1;
		x=(x*x)%mod;
	}
	return ans;
}
void pre_work()//预处理
{
	jc[0]=1;
	for(long long i=1;i<=1000000;i++)
		jc[i]=(jc[i-1]*i)%1000000007;
	inv[1000000]=qpow(jc[1000000],1000000005,1000000007);
	for(long long i=999999;i>=0;i--)
		inv[i]=(inv[i+1]*(i+1))%1000000007;
 }
長い長いセンチメートル(長い長nは、長い長M){戻りJC [N] * INV [M]%十億七*のINV [nm]の%十億七;} // 検索Cの
INTのmain()
{ 
	pre_work(); 
	scanfの( " %のLLD%のLLD」、およびN-、&K); 
	int型フラグに= 1; // Qijiaためにも保存
	(ロングロングI = Kため、I <= N; Iは++)
	{ 
		ANS =(ANSの+(((CM&LT(N- 、I)* CM(I、 K))%十億七*(qpow(2、qpow(2、NI、十億六)、十億七)-1))%十億七)*フラグ%十億七)%十億七; // 式、その包含および除外注
		フラグ-FLAG = Inを; 
	} 
	COUT <<(ANS +十億七)%十億七; //最後のステップは+ MOD MOD%の再び減算、それほど注目されるように
	戻り0; 
}

 

RP ++

おすすめ

転載: www.cnblogs.com/wzc521/p/11123353.html