ICPCアジア上海2019 J.ストーンゲームのための予備コンテスト

トピック:https://nanti.jisuanke.com/t/41420

アイデア:01リュックサックプログラム 

           (a∈S「)が最小である場合            

           和(S ') - a≤Sum(S-S' の場合)を設立

           次に、(∀t∈S '和(S') - t≤Sum(S-S「))を設立し、一定 

           すなわち、現在の降順A [i]の石の選択された最小値に対する

#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
const  int型 MOD = 1E9 + 7 int型 [ 400 ]。
int型の DP [ 150001 ]。
INT CMP(INT A、INT B)
{ 
    戻り > Bと、
} 
int型のmain()
{ 
    int型T。
    scanf関数(" %のD "、&T)。
    int型のn;
    一方、(T-- 
    { 
        scanf関数(" %dの"、&N)
        int型 S = 0、ANS = 0 ;
        以下のためにINT iが= 0 ; I <N; I ++)のscanf(" %dの"、および[I])、Sを+ = [I]。
        ソート( +のN、CMP)。
        memsetの(DP、0はsizeof DP)。
        DP [ 0 ] = 1 ;
        以下のためにINT iが= 0 ; I <N; I ++ のためのINT J = S; J> = [I]; j-- 
            { 
                場合(J> = SJ && JA [I] <= SJ)ANS =(ANS + DP [JA [I])%のMOD。
                DP [J] =(DP [J] + DP [JA [I])%のMOD。
            } 
        のprintf(" %dの\ n " 、ANS)。
    } 
    戻り 0 
}

おすすめ

転載: www.cnblogs.com/c4Lnn/p/12090711.html