学校以上2019電動ブランク(DP)をハング

効果:N-長配列$ $、各位置範囲$ [0,3] $、$ M $制限$は(Lは、R、X)$ [R、L] $を表し内$ X $ $種を有します数は、いくつかのプログラムを見つけます。

 

各数の維持は、暴力の$ DP $を最後の位置が登場しました

トリックは、位置の数は実装に$ 0 $を選択していないことです

#include <iostreamの> 
する#include <cstdioを> 
する#include <キュー> 
の#define REP(I、N)のために(INT iは=、iが<= N; ++ I)
の#define PER(I、N )のための(I = N int型; I> = A; - I)
名前空間stdを使用。
typedefの長い長いLL。
typedefのペア<int型、int型> PII。
CONST int型N = 110、P = 998244353。
N INT、M。
ベクター<PII> F [N]。
INT DP [N] [N] [N] [N]。
ボイド追加(INT&X、int型のY){X + = Y;(X> = P)のx = Pなら} 
int型のmain(){ 
	int型のT。
	cinを>>トン。
	(t--){一方
		CIN >> N >> M。
		REP(I、1、N)F [i]が.clear(); 
		一方、(M--){ 
			int型のL、R、X。
			CIN >> L >> R >> X。
			F [R] .pb(PII(L、X));
		REP(I、1、N){ 
			CUR ^ = 1; 
			REP(j、0、I)REP(k、0、j)のREP(T、0、K)DP [CUR] [j] [k]は[T] = 0; 
			REP(j、0、I-1)REP(k、0、j)のREP(T、0、K){ 
				int型&R = DP [J] [K] [T] [CUR!]。
				もし継続(R!)。
				追加(DP [CUR] [j] [k]は[T]、R)。
				追加(DP [CUR] [I-1]〜[J] [K]、R)。
				追加(DP [CUR] [I-1]〜[J] [T]、R)。
				追加(DP [CUR] [I-1] [K] [T]、R)。
			} 
			REP(j、0、I-1)REP(k、0、j)のREP(T、0、K){ 
				ための(自動U:F [I]){ 
					IF(1+(J> = UX)+ (K> = UX)+(T> = UX)= UY){!
						DP [CUR] [j] [k]は[T] = 0; 
					} 
				} 
				(I == n)が追加した場合(ANS、DP [CUR] [j] [k]の[T])。
			} 
		} 
		のprintf( "%d個の\ n"、ANS)。
	}
}

 

おすすめ

転載: www.cnblogs.com/uid001/p/11228589.html
おすすめ