【HDOJ6578】ブランク(DP)

問題の意味:長さnの配列、0,1の各位置における値は、2,3、M個の制約がある位置[L [i]は、Rが[I]別に制限そこ値x [i]がA、プログラム番号MOD 998244353を尋ねます

N <= 100、M <= 100

アイデア:

 

 

  1つの#include <ビット/ STDC ++ H>
   2  使用して 名前空間STDを、
  3 typedefの長い 長いLL。
  4符号なしのtypedef int型 のuint ;
  5 typedefの符号なしの長い 長いULL。
  6のtypedef対< INTINT > PII。
  7のtypedef対<-1,11,11-> PLL。
  8 typedefのベクトル< int型 > VI。
  9のtypedefベクトル<PII> VII。
10のtypedef対<LL、INT > P。
11  の#define N 110
 12  の#define M 151000
 13  の#define Fiの最初の
 14  の#define SE第
 15  の#define MPがmake_pair
 16件 の#defineパイACOSを(-1)
 17  の#defineはsizeof MEM(A、B)のmemset(A、B、 (A))
 18  の#define iは=(INT)B <; I ++)のRep(iについては、B)(I =(INT INT)
 19  の#defineため当たり(I、B)(I int型=(INT)A; I> =(INT)B; i--)
 20  の#define lowbit(x)は、x&( - X)
 21  の#defineランド(RAND()*(1 << 16)+ランド())
 22  の#define ID(X)((X)<= B(X):MN /(X)+1)
23件 の#define LS P << 1
 24  の#define RS P << 1 | 1
 25  
26  のconst  int型 MOD = 998244353、INV2 =(MOD + 1)/ 2 27        二重 EPS = 1E- 6 28        LL INF = 1E18。
29        LL INF = 5E13。
30        int型 DX [ 4 ] = { - 1100 }。
31        のint DY [ 4 ] = { 00、 - 11 }。
32  
33  のint DP [ 2 ] [N] [N] [N]。
34個の VII C [N]。
35  
36  のint リード()
 37  {
 38     INT V = 0、F = 1 39     チャー C = GETCHAR()。
40     一方、(C < 48 || 57 <C){ もし、(C == ' - ')、F = - 1C = GETCHAR();}
 41     ながら48 <= C && C <= 57)V =(V <<3)+ V + V + C- 48、C = GETCHAR()。
42     リターンのV *のF;
43  }
 44  
45  ボイド計算値(int型と、int型B)
 46  {
 47      + = B。
48      であれば(> = MOD)A- = MOD。
49  }
 50  
51  のint main()の
 52  {
 53      // freopenは( "1.in"、 "R"、STDIN)。
54      // freopenは( "1.out"、 "W"、STDOUT)。
55      int型 CAS = リード()。
56      しばらく(cas-- 57      {
 58          INT N =読み取る()、M = 読み取ります();
59          担当者(I、1 、N)C [i]は.clear();
60          担当者(I、1 、m)の
 61          {
 62              INT X =リード()、y)は(読み取り= Zは= 読み取ります();
63              // のprintf( "X =%DY =%DZ =%d個の\ n"、X、Y、Z)
64個の             C [Y] .push_back(MP(X、Z))。
65          }
 66          担当者(I、0 、N)
 67           担当者(j、0 、N)
 68            担当者(K、0、N)DP [0 ] [i] [j]は[K] = 0 69          DP [ 0 ] [ 0 ] [ 0 ] [ 0 ] = 1 70          int型の V = 0 ;
71          担当者(I、1 、N)
 72          {
 73              V ^ = 1 ;
74              担当者(j、0 、I)
 75               のrep(K、0 、j)は
 76                担当者(T、0、K)DP [V] [j] [k]は[T] = 0 ;
77              担当者(J、0、I- 1 78               担当者(K、0 、j)は
 79                担当者(T、0 、k)の
 80                {
 81                      CALC(DP [V] [j] [k]は[T]、DP [ 1 - V] [ J] [K] [T])。
82                      CALC(DP [V] [I- 1 ] [K] [T]、DP [ 1 - V] [J] [K] [T])。
83                      CALC(DP [V] [I- 1 ] [J] [T]、DP [ 1 - V] [J] [K] [T])。
84                      CALC(DP [V] [I- 1 ] [j] [k]は、DP [ 1 -V] [J] [K] [T])。
85                }
 86              担当者(j、0、I- 1 87               担当者(K、0 、j)は
 88                担当者(T、0 、k)の
 89                {
 90                    のためのint型のx = 0 ; X <C [I] .size( ); X ++ 91                    {
 92                        PIIのTMP = C [i]は、[X]。
93                        であれば((J> = tmp.fi)+> = tmp.fi(K)+> = tmp.fi(T)+ 1!= tmp.se)DP [V] [j] [k]は[T] = 0 ;
94                   }
 95                }
 96          }
 97          INT ANS = 0 98          担当者(I、0、N- 1 99           担当者(j、0 、I)
 100            のrep(k、0 、j)の計算値(ANS、DP [V] [I] [J] [K])。
101          のprintf(" %d個の\ n " 、ANS)。
102  
103      }
 104      戻り 0 ;
105 }

 

おすすめ

転載: www.cnblogs.com/myx12345/p/11543105.html