J.ストーンゲーム(ナップザック問題)

タイトルます。https://nanti.jisuanke.com/t/41420

DP [X] [Y]は、xの定義は、最後の番号に最初のプログラムの数を表し、Yであり、組成物は、缶

#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
typedefの長い 長いLL。
CONSTの INT N = 303 const  int型 M = 150000 ;
const  int型 MOD = 1E9 + 7 INT DP [N] [M]。
INT [N]。
INT のmain(){
     int型のT。
    scanf関数(" %のD "、&T)。
    一方、(t-- ){
         int型 N、和= 0 
        scanf関数(" %dの"N)
         のためにint型 I = 1は iがn = <; iは++ ){ 
            scanf関数(" %dを"[I]); 
            合計 + = [I]; 
        } 
        ソート(A + 1、+ 1 + ; N)
         のためのint型 I = 0 iが<=和; iが++ 
            DP [N + 1 ] [I] = 0 ;
         int型 ANS = 0 ; 
        DP [N + 1 ] [ 0] = 1 ;
         のためのINT I = N-; Iは> = 1 ; i-- ){
             ためINT J = 0 ; J <= SUM; J ++ ){ 
                DP [I] [J]は DPを= [Iは、+ 1。] [ J];
                 IF(J>は= [{I])// ちょうど十分[I]の電流を増加させるために、及びJとして 
                    DP [I] [J] + DP = [Iは+ 1 ] [J- [I] ];
                     // 満たすDPは、[I] [j]は複数の光源を有することができるので、条件が複数のソースから選択する必要が添加前
                    IF(J> =(SUM-J)&& ABSを(J-(SUM-J ))<= A [I])
                        ANS + DP = [Iは+ 。1 ] [J- A [I]]。
                        ANS%= MOD。
                } 
                DP [I] [J]%= MOD。
            } 
        } 
        のprintf(" %LLDを\ n " 、ANS)。
    } 
    戻り 0 
}
コードの表示

 

おすすめ

転載: www.cnblogs.com/starve/p/11525023.html