マトリックス(DPヘテロタイトル、タイトル思考)

それは、おかげ神の問題である兄LNC指導。

前提1-LL [i]は集合的に左間隔と呼ばれる、RR [I] -mは右部であります

1-iの統計カラムから左端部Lとの接頭辞[I]、および新興、R [i]は右側面断面図である....

F [i]が[j]は、jは番号iに1の存在下でのi番目の列、左終点と右部(RR [I])における電流を表し、全体的なスキームは、電流を表します。

そこで、我々はいくつかのケースに分け

二つは、直接転送されています

     F [I + 1]〜[J] = F [i] [j]はiが右に移動J、同じプログラムの転送を表します

     F [I + 1] [j + 1] = F [I] [J] *(R [I + 1] -j)さらにオプション、Rから新たな電流を示し、[I + 1](すなわち右側のセクションの数)-j転送

一つはと整列している.......

     F [i] [j]はFを= [I] [J] * A(IJL [I-1]、L [I] -L [I-1])

     これは[I-1]、それを埋めるために必要である-L [i]は余分なステップ間隔で現在の操作がLであることを示し

     IJL [I-1]は、最大放電を示し、可変配列ので、それが配置されている......

1の#include <iostreamの>
 2の#include <cstdioを>
 3の#include < ストリング >
 4の#include <アルゴリズム>
 5の#include <cmath>
 6の#include <ベクトル>
 7の#include <地図>
 8の#include <CStringの>
 9  #定義 INT長い長い
 10  の#define MAXN 3010
 11  の#define MOD 998244353
 12を 使用して、 名前空間STDを、
13  INT 傑[MAXN]、NI [MAXN]、ni_c [MAXN]。
14  のint F [MAXN] [MAXN]。
15  INT A(INTX、int型のY)
 16  {
 17      であれば(Yの== 0リターン 1 18     // のprintf( "X =%LLD XY =%LLD%LLD%LLD \ n"、X、XY、傑[X]、ni_c [XY])。
19      リターン傑[X] * ni_c [XY]%MOD。
20  }
 21  int型N、M。
22  のint L [MAXN]、R [MAXN]。
図23は、 メイン()符号付き
 24  {
 25      のscanf(" %のLLDの%のLLD "、&​​N、&M)を、
26      傑[ 0 ] = 1NI [ 0 ] =1 ; ni_c [ 0 ] = 1 ;
図27は、      最大の[ 1 ] = 1[ 1 ] = 1ni_c [ 1 ] = 1 28      のためにint型 I = 2 ; I <= M ++ i)が
     {
 29  30          潔[I] =([ 'D I- 1 ] *%)、MOD。
31 // 最大のprintf( "%のLLD] =%LLDの\ nを"、私は、私は思います[I]); 32          [I] =(MOD-MOD / I)* [MOD%]%MOD。
33          ni_c [I] =(ni_c [I- 1 ] * [I])%MOD。
34         
     }
 35      のためにint型 i = 1 ; iは= N <; ++ I)
 36      {
 37          のint X、Y。
38          のscanf(" %のLLDの%のLLD "、およびX&Y)。
39          L [X] ++; R [Y] ++ ;
40      }
 41      のためのint型 I = 1 ; I <= M; ++ i)が
 42      {
 43          L [I] + = L [I- 1 ]。
44          R [I] + = R [I- 1 ]。
45      }
 46      F [ 1] [ 0 ] = 1 47      のためにint型 I = 1 ; I <= M; ++ I)
 48      {
 49          のためにINT J = 0 ; J <= R [I]; ++ j)の
 50          {
 51               であれば(L [I] -l [I- 1 ]> IJL [I- 1 ])ブレーク52               F [I] [J] =([I] [J] F * A(IJL [I- 1 ]、L [I] -l [I- 1 ]))%MOD。
53               F [I + 1 ] [J] + = F [I] [J]。
54               F [iが+1 ] [J + 1 ] + = F [I] [J] *(R [I + 1 ] -j)%MOD。
55               // のprintf( "F [%のLLD] [%のLLD] =%LLDする\ n"、I、J、F [i]は[J])。
56          }
 57      }
 58      のprintf(" %LLDする\ n " 、F [M] [N])。
59 }
コードの表示

 

おすすめ

転載: www.cnblogs.com/Wwb123/p/11288184.html