1288C Codeforces. Два Массивы (дп)

Ссылка: https: //codeforces.com/contest/1288/problem/C

C. Два Массивы

Смысл проблем: Принимая во внимание ряд н и ряд м, сконструированы таким образом два массива а и Ь удовлетворяют условию, значение всех элементов в массиве между 1 ~ п, а и Ь длина массива м .. 2. а массивы монотонно убывает, Ь массив 3 не увеличивается монотонно произвольное положение я, есть я <В = Я

 

Идея: Вы можете сделать сочетание математики, может также дп дп следующее является практика. Во- первых, если а, б сливаются в две массивы . 1 , А 2 , А . 3 , ....... A м , B м , B м-. 1 , В м-2 , B м. 3- ... б ........ 3 , б 2 , б 1, могли бы найти , что число столбцов не монотонно убывает, то мы можем сделать дп,

DP [I] [J] обозначает я-й позиции может быть увеличена до числа программ, равных у, то уравнение переноса является дп [I] [J] = дп [I-1] [J] + дп [I] [J + 1]

 

AC код:

1 #include <iostream>
 2 #include <cstdio>
 3 #include <CString>
 4 #include <Алгоритм>
 5 #include <вектор>
 6 # include <очереди> 
 7 с  использованием  пространства имен STD;
8 ЬурейеЕ долго  долго LL;
9  Const  INT MAXM = 12 ;
10  Const  INT maxn = 1e3 + 5 ;
11  Const  INT мод = 1e9 + 7 ;
12 LL дп [MAXM * 2 ] [maxn]; 
13  ИНТОсновной () {
 14      INT п, м;
15      зсапЕ ( " % d% d " , & п, & м);
16      для ( Int I = 1 ; я <= п; я ++) дп [ 1 ] [I] = 1 ;
17      для ( Int I = 2 , я <= 2 * м; я ++ ) {
 18          для ( INT J = п; J> = 1 ; j-- ) {
 19              дп [I] [J] = (дп [я] [J + 1 ] + дп [i - 1 ] [J])% мод;
20          }
21      }
 22      LL ANS = 0 ;
23      для ( Int I = 1 ; я <= п; я ++ ) {
 24          ANS = (ANS + дп [ 2 * м] [I])% мод;
25      }
 26      Е ( " % d " , ANS);
27      возвращения  0 ;
28 }

рекомендация

отwww.cnblogs.com/AaronChang/p/12210864.html