D.は、アレイ(+簡単な数学的思考)をカウント

タイトル:ポータル

質問の意味:Qどのように多くのシーケンスの長さのnは、満たされています:

1、配列の各要素が満たす1 aiを<= aiを<= M

図2に示すように、正確に等しい要素の唯一の対

図3に示すように、インデックスが存在するIように  A J < A J + +1、もし  J <I、および  J > J + 1、もし  J I

 

アイデア:

長さのシーケンスN、及び等しい数の組を有することが起こり、その後、Nがある - 異なる要素の1人の数が、各要素は1〜Mの間であり、およびC(N - 1、M)が存在することN取るする方法 - 1異なる番号。

借入の種類 - ちょうど等しい要素の対は、(2 n)の等しい数があることが、最大数、他の缶の数に等しくすることができません。

配列満たす合計3 2(N-1)^種の条件からなるN個の異なるn個の長さ。

最大値の両側に確実に同数、他方が最大値は両側にすることができない、数を制限し、互いにN個の異なるなかっ - 2ポジションRuoyi番号も有する位置の数に等しいですOKの。

図3は、2 ^(N - 3)の成立条件であるタイプ、自由空間の両方として、他の確定の数、2つの数値が等しい埋めます。

 

#include <ビット/ STDC ++ H>
 の#define LL長い長
 の#define MEM(i、j)はmemsetの(I、J、はsizeof(I))
 の#define(INTのための担当者(I、J、K)は、iがjを=。 I <= K; I ++)
 の#define(int型のためのDEP(i、j、k)はiのkは=; I> = J; i--)
 の#define PB一back
 の#define作るmake_pair
 の#define INF INT_MAX
 の#define INF LLONG_MAX
 #定義(-1)ACOS PIを
 の#define第1FIR
 の#define第秒
 用いて 名前空間STDを、

const  int型のmod = 998244353 ; 

LL KSM(LLのA、INT B){
    LLは、resは =1 ;
    一方、(b)は、{
         もし、(B&1)RES = RES *%のMOD。*%の= MODを。
        B >> = 1 
    } 
    戻りRES。
} 

LL C(INT N、int型M){ 
    LL resdw1 = 1 
    担当者(I、1、N)resdw1 = resdw1 * I%MOD。
    LL resdw2 = 1 
    担当者(I、1、M - N)resdw2 = resdw2 * I%MOD。
    LL resup = 1 ; 
    担当者(I、1、M)resup = resup * I%のMOD。
    戻り resup * KSM(resdw1、MOD - 2)%MOD * KSM(resdw2、MOD - 2)%のMOD。
} 

int型のmain(){
     int型N、M。
    scanf関数(" %D%D "、&​​N、&M)。
    もし(N == 2)プット(" 0 " )。
    { 
        LL ANS = KSM(2LL、N - 3)* 1LL *(N - 2)%のMOD * C(N - 1、m)の%モッド; 
        printf(" %のLLD \ n " 、ANS)。
    } 
    戻り 0 
}

 

おすすめ

転載: www.cnblogs.com/Willems/p/12465248.html