рдореИрдВ рдЧрддрд┐рд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ (рдмрд╛рдж рдореЗрдВ рдмрд╕ рдбрд╛рдпрдирд╛рдорд┐рдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд▓реЗрдЦ рдкрд╛рдХрд░ рдмреЗрд╣рдж рд╣реИрд░рд╛рди рдерд╛ рдпрд╣ рд╣рдореЗрд╢рд╛ рдореБрдЭреЗ рдкреНрд░рддреАрдд рд╣реБрдЖ рдХрд┐ рдпрд╣ рдкреНрд░рддрд┐рдорд╛рди рдХрд╛рдлреА рд╡реНрдпрд╛рдкрдХ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдУрд▓рд┐рдВрдкрд┐рдпрд╛рдбреНрд╕ рдХреА рд╕реАрдорд╛рдУрдВ рд╕реЗ рдкрд░реЗ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЕрдкрдиреЗ рд▓реЗрдЦ рдХреЗ рд╕рд╛рде рдЗрд╕ рдЕрдВрддрд░ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред
рдореВрд▓ рдмрд╛рддреЗрдВ
рд╢рд╛рдпрдж рдПрдХ рд╡рд╛рдХреНрдп рдореЗрдВ рдореИрдВрдиреЗ рдбрд╛рдпрдирд╛рдорд┐рдХреНрд╕ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд░реНрдгрди рд╕реБрдирд╛ рд╣реИ:
рдбрд╛рдпрдиреЗрдорд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд╛рд░реНрдп рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдФрд░ рд╣рдо рдЗрд╕реЗ рдЫреЛрдЯреЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рддреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ рдпрд╣ рднреА рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПред (c) рдПред рдХреБрдореЛрдХ
рдЖрдк рдХреА рдЬрд░реВрд░рдд рд╣реИ рдЧрддрд┐рд╢реАрд▓рддрд╛ рджреНрд╡рд╛рд░рд╛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
1) рдбрд╛рдпрдиреЗрдорд┐рдХреНрд╕ рд╕реНрдерд┐рддрд┐: рдкреИрд░рд╛рдореАрдЯрд░ (рдПрд╕) рдЬреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдЙрдкрдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред
2) рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛рдУрдВ рдХреЗ рдореВрд▓реНрдпред
3) рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдХреНрд░рдордг: рдкреБрдирд░реНрдЧрдгрдирд╛ рд╕реВрддреНрд░ред
4) рднрд░реНрддреА рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛ред
5) рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЙрддреНрддрд░ рдХреА рд╕реНрдерд┐рддрд┐: рдХрднреА-рдХрднреА рдпрд╣ рдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИ рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдИ рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЕрдзрд┐рдХрддрдоред
рдкреБрдирд░реНрдЧрдгрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛
рддреАрди рд░реВрдкрд╛рдВрддрд░рдг рдЖрджреЗрд╢ рд╣реИрдВ:
1) рдкреНрд░рддреНрдпрдХреНрд╖ рдЖрджреЗрд╢:
рд░рд╛рдЬреНрдп рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рд▓реЛрдЧреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреБрдирд░реНрдЧрдгрдирд╛ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

2) рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░:
рд╕рднреА рд╕реНрдерд┐рддрд┐ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдбреЗрдЯ рдХреА рдЬрд╛рддреА рд╣реИрдВред

3) рдЖрд▓рд╕реА рдЧрддрд┐рдХреА:
рдкреБрдирд░рд╛рд╡рд░реНрддреА рдиреЗ
рдбрд╛рдпрдирд╛рдорд┐рдХреНрд╕ рдХреЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕рдорд╛рд░реЛрд╣ рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ред рдпрд╣ рдПрдХ рдЪрдХреНрд░реАрдп рд░рд╛рдЬреНрдп рдЧреНрд░рд╛рдл рдкрд░
рдПрдХ рдЧрд╣рд░реА рдЦреЛрдЬ рдХреА рддрд░рд╣ рдХреБрдЫ рд╣реИ, рдЬрд╣рд╛рдВ рдХрд┐рдирд╛рд░реЛрдВ рдЙрдирдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╣реИрдВред

рдкреНрд░рд╛рдердорд┐рдХ рдЙрджрд╛рд╣рд░рдг:
рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛ ред рд╕реНрдерд┐рддрд┐ - рд╕рдВрдЦреНрдпрд╛ рд╕рдВрдЦреНрдпрд╛ред
рдкреНрд░рддреНрдпрдХреНрд╖ рдЖрджреЗрд╢:
fib[1] = 1
рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░:
fib[1] = 1
рдЖрд▓рд╕реА рдЧрддрд┐рд╢реАрд▓рддрд╛:
def get_fib(i): if (i <= 2):
рддреАрдиреЛрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рдЬреАрд╡рди рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛ рдЕрдкрдирд╛ рджрд╛рдпрд░рд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдХреНрд╕рд░ рджреВрд╕рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЕрддрд┐рд╡реНрдпрд╛рдкреАред
рдмрд╣реБрдЖрдпрд╛рдореА рдЧрддрд┐рд╢реАрд▓рддрд╛
"рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдХреНрд░рдо" рдореЗрдВ, рдПрдХ рдЖрдпрд╛рдореА рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рддреБрд░рдВрдд рдмрд╣реБрдЖрдпрд╛рдореА рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реВрдБрдЧрд╛ред рдпрд╣ рдПрдХ рдЖрдпрд╛рдореА рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╢рд╛рдпрдж рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рдорд╛рдк рдХреА рд╕рдВрдЦреНрдпрд╛, рдЕрд░реНрдерд╛рддреН, рд░рд╛рдЬреНрдп рдореЗрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред рдЗрд╕ рдЖрдзрд╛рд░ рдкрд░ рд╡рд░реНрдЧреАрдХрд░рдг рдЖрдорддреМрд░ рдкрд░ "рдПрдХ-рджреЛ-рдХрдИ" рдпреЛрдЬрдирд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореМрд▓рд┐рдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдмрд╣реБрдЖрдпрд╛рдореА рдЧрддрд┐рдХреА рдПрдХ-рдЖрдпрд╛рдореА рд╕реЗ рдмрд╣реБрдд рднрд┐рдиреНрди рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк рдХреБрдЫ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рджреЗрдЦрдХрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
рдЙрджрд╛рд╣рд░рдг рдирдВрдмрд░ 1: рдПрд╕рдПрдордПрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛
рдкрд╣рд▓реЗ, рдЬрдм рдлреЛрди рдореЗрдВ рдмрдЯрди рд╣реЛрддреЗ рдереЗ, рдЙрдирдХреЗ рдХреАрдмреЛрд░реНрдб рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреЗ рдереЗ:

рдпрд╣ рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреАрдмреЛрд░реНрдб рдкрд░
k
рдирд▓ рд╕реЗ рдЕрдзрд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд╛рда рд╕рдВрджреЗрд╢ рдХрд┐рддрдиреЗ рд▓рд┐рдЦрдиреЗ рд╣реИрдВред
рдирд┐рд░реНрдгрдп1) рдбрд╛рдпрдиреЗрдорд┐рдХреНрд╕ рд╕реНрдерд┐рддрд┐:
dp[n][m]
-
m
рдирд▓ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рд▓рдВрдмрд╛рдИ
n
рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред
2) рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐: рд╢реВрдиреНрдп рдХреНрд▓рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд▓рдВрдмрд╛рдИ рд╢реВрдиреНрдп рдХрд╛ рдПрдХ рд╕рдВрджреЗрд╢ рд╣реИ - рдЦрд╛рд▓реАред
3) рдкреБрдирд░реНрдЧрдгрдирд╛ рд╕реВрддреНрд░: рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдЖрда рдЕрдХреНрд╖рд░ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ, рджреЛ рдФрд░ рддреАрди рдХреНрд▓рд┐рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд╕рд╛рде рд╣реА рджреЛ рдЕрдХреНрд╖рд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдкреНрд░рддреНрдпрдХреНрд╖ рднрд░реНрддреА:
dp[n][m] = (dp[n - 1][m - 1] + dp[n - 1][m - 2] + dp[n - 1][m - 3]) * 8 + dp[n - 1][m - 4] * 2
рд░рд┐рд╡рд░реНрд╕ рдПрдХреНрд╕рдЪреЗрдВрдЬ:
dp[n + 1][m + 1] += dp[n][m] * 8 dp[n + 1][m + 2] += dp[n][m] * 8 dp[n + 1][m + 3] += dp[n][m] * 8 dp[n + 1][m + 4] += dp[n][m] * 2
4) рд░реВрдкрд╛рдВрддрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛:
рдпрджрд┐ рдЖрдк рд╕реАрдзреЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЧрддрд┐рд╢реАрд▓рддрд╛ рд╕реАрдорд╛ рд╕реЗ рдкрд░реЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрд▓рдЧ рд╕реЗ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рд╣рдо
dp[n - 1][m - 4]
рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдЫреЛрдЯреЗ
m
рд▓рд┐рдП рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕реЗ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдпрд╛ рддреЛ рдЪреЗрдХ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рддрдЯрд╕реНрде рддрддреНрд╡реЛрдВ рдХреЛ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреЛ рдЙрддреНрддрд░ рдирд╣реАрдВ рдмрджрд▓рддреЗ рд╣реИрдВ)ред
рд░реАрдХрд╛рдЙрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ: рд╣рдо рд╣рдореЗрд╢рд╛ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рд╣рдо рдирдХрд╛рд░рд╛рддреНрдордХ рддрддреНрд╡реЛрдВ рдореЗрдВ рди рдЬрд╛рдПрдВред
5) рдЙрддреНрддрд░ рд╕рднреА рд░рд╛рдЬреНрдпреЛрдВ рдХрд╛ рдпреЛрдЧ рд╣реИред
рдпреБрдкреАрдбреА:рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВрдиреЗ рдПрдХ рдЧрд▓рддреА рдХреА - рд░рд╛рдЬреНрдп рд╕реЗ рд╕рдВрджреЗрд╢
n
рдХреА рд▓рдВрдмрд╛рдИ рдХреЛ рд╣рдЯрд╛рдХрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдПрдХ-рдордВрдж рд░реВрдк рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
1) рд╕реНрдерд┐рддрд┐:
dp[m]
- рд╡рд┐рднрд┐рдиреНрди рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬреЛ
m
рдХреНрд▓рд┐рдХ рдореЗрдВ рдЯрд╛рдЗрдк рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред
2) рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛:
dp[0] = 1
ред
3) рдкреБрдирд░реНрдЧрдгрдирд╛ рд╕реВрддреНрд░:
dp[m] = (dp[m - 1] + dp[m - 2] + dp[m - 3]) * 8 + dp[m - 4] * 2
4) рдЖрджреЗрд╢: рд╕рднреА рддреАрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
5) рдЙрддреНрддрд░ рд╕рднреА рд░рд╛рдЬреНрдпреЛрдВ рдХрд╛ рдпреЛрдЧ рд╣реИред
рдЙрджрд╛рд╣рд░рдг 2: рдШреЛрдбрд╝рд╛
рдПрдХ рд╢рддрд░рдВрдЬ рдХрд╛ рдШреЛрдбрд╝рд╛ рдЖрдХрд╛рд░ рдХреЗ рдмреЛрд░реНрдб рдкрд░ рдкрд┐рдВрдЬрд░реЗ
(1, 1)
рдореЗрдВ рдЦрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ
M
рд╕реЗрд▓
(N, M)
рдХреЛ рдЪрд╛рд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЪрд░рдгреЛрдВ рдореЗрдВ рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:

рдирд┐рд░реНрдгрдп1) рдЧрддрд┐рд╢реАрд▓рддрд╛ рд░рд╛рдЬреНрдп:
dp[i][j]
-
(i, j)
рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред
2) рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп: рдЖрдк рд╕реЗрд▓
(1, 1)
рдПрдХ рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░реЗрдВред
3) рдкреБрдирд░реНрдЧрдгрдирд╛ рд╕реВрддреНрд░:
рд╕реАрдзреЗ рдЖрджреЗрд╢ рдХреЗ рд▓рд┐рдП:
dp[i][j] = dp[i - 2][j - 1] + dp[i - 2][j + 1] + dp[i - 1][j - 2] + dp[i + 1][j - 2]
рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░ рдХреЗ рд▓рд┐рдП:
dp[i + 1][j + 2] += dp[i][j] dp[i + 2][j + 1] += dp[i][j] dp[i - 1][j + 2] += dp[i][j] dp[i + 2][j - 1] += dp[i][j]
4) рдФрд░ рдЕрдм рдЗрд╕ рдХрд╛рд░реНрдп рдореЗрдВ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣рд┐рд╕реНрд╕рд╛: рдЖрджреЗрд╢ред рдпрд╣рд╛рдВ рдЖрдк рдХреЗрд╡рд▓ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдпрд╛ рд╕реНрддрдВрднреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВ рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдпрдерд╛ рд╣рдо рдЙрди рд░рд╛рдЬреНрдпреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реЗрдВрдЧреЗ рдЬрд┐рдиреНрд╣реЗрдВ рдЕрднреА рддрдХ рдПрдХ рдкреНрд░рддреНрдпрдХреНрд╖ рдХреНрд░рдо рдореЗрдВ рдкреБрдирд░реНрдЧрдгрдирд╛ рдирд╣реАрдВ рд╣реБрдИ рд╣реИ, рдФрд░ рд╣рдо рдЕрднреА рднреА рдЕрдзреВрд░реЗ рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рд░рд┐рд╡рд░реНрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рд▓реЗ рдЬрд╛рдПрдВрдЧреЗред
рдЗрд╕рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ:
1) рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖрдУред
2) рдЖрд▓рд╕реА рдЧрддреНрдпрд╛рддреНрдордХрддрд╛ рдХреЛ рдЪрд▓рд╛рдПрдВ, рдЙрд╕реЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рджреЗрдВред
рдпрджрд┐ рдЖрдк рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рд╣реИрдВ - рд╣рдо рдЖрд▓рд╕реА рдЧрддрд┐рд╢реАрд▓рддрд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде рд╕рд╛рдордирд╛ рдХрд░реЗрдЧрд╛ред
рдпрджрд┐ рдЖрд▓рд╕реНрдп рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ:

рдпрд╣ рдЖрджреЗрд╢ рдкреНрд░рддреНрдпрдХреНрд╖ рдЪрд░рдг рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг, рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИред
5) рдЙрддреНрддрд░ рдХреЗрд╡рд▓
dp[n][m]
рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред
рдЧрддрд┐рд╢реАрд▓рддрд╛ рдФрд░ рд╕рдВрдХреНрд░рдордг рдореИрдЯреНрд░рд┐рдХреНрд╕
рдпрджрд┐ рдЖрдкрдиреЗ рдХрднреА рднреА рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдХреЛ рдЧреБрдгрд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рд╢реАрд░реНрд╖рдХ рдХреЛ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо
рд╡рд┐рдХрд┐ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЧрддрд┐рд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдирдиреНрдд рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛ред
рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рд╕реБрдзрд╛рд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╡реЗрдХреНрдЯрд░ рд╣реИ

рдЬрд┐рд╕рд╕реЗ рд╣рдо рд╡реЗрдХреНрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ

ред рдЖрдЗрдП рд╕реВрддреНрд░реЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рдЦреЛрд▓реЗрдВ:

ред рдЖрдк рдЗрд╕реЗ рд╡реЗрдХреНрдЯрд░ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ

рд╡реЗрдХреНрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕реЗ рдЧреБрдгрд╛ рдХрд░рдХреЗ, рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓реЗ рд╡реЗрдХреНрдЯрд░ рд╕реЗ рдХреЗрд╡рд▓ рдореБрдбрд╝рд╛ рд╣реБрдЖ рдЪрд░ рдЕрдВрддрд┐рдо рд╡реЗрдХреНрдЯрд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдпрд╣рд╛рдБ рдпрд╣ рд╣реИ:

ред рд╣рдо рдЗрд╕реЗ рд╕рдВрдХреНрд░рдордг рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╣рддреЗ рд╣реИрдВред
рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рд╡реЗрдХреНрдЯрд░ рд▓реЗрддреЗ рд╣реИрдВ

рдФрд░ рдЗрд╕реЗ рд╕рдВрдХреНрд░рдордг рдореИрдЯреНрд░рд┐рдХреНрд╕
n - 1
рдЧреБрдгрд╛ рдХрд░реЗрдВ
n - 1
рдмрд╛рд░, рд╣рдо рд╡реЗрдХреНрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ

, рдЬрд┐рд╕рдореЗрдВ
fib[n]
рдирд┐рд╣рд┐рдд рд╣реИ - рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЙрддреНрддрд░ред
рдФрд░ рдЕрдм, рдпрд╣ рд╕рдм рдХреНрдпреЛрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЧреБрдгрди рдореЗрдВ рд╕рдВрдмрджреНрдзрддрд╛ рдХреА рд╕рдВрдкрддреНрддрд┐ рд╣реИ, рдЕрд░реНрдерд╛рддред

(рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдХрдореНрдпреВрдЯрд┐рдЯреА рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реИ)ред рдпрд╣ рд╕рдВрдкрддреНрддрд┐ рд╣рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рджреЗрддреА рд╣реИ:

ред
рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рдЖрдк
рддреАрд╡реНрд░ рдШрд╛рддрд╛рдВрдХ рд╡рд┐рдзрд┐ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

ред рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рд╣рдо рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдкрд░рд┐рдЪрд╛рд▓рдиреЛрдВ рдХреЗ рд▓рдШреБрдЧрдгрдХ рдХреЗ рд▓рд┐рдП
N
рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗред
рдФрд░ рдЕрдм рдЙрджрд╛рд╣рд░рдг рдЕрдзрд┐рдХ рдЧрдВрднреАрд░ рд╣реИ:
рдЙрджрд╛рд╣рд░рдг рд╕рдВрдЦреНрдпрд╛ 3: рд╕рд╡рдереЛрде рдЕрдиреБрдХреНрд░рдо
рд╣рдо рд▓рдВрдмрд╛рдИ
N
рдХреЗ sawtooth рдЕрдиреБрдХреНрд░рдо рдХреЛ рдЙрд╕ рдЕрдиреБрдХреНрд░рдо рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реВрдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдо рддрддреНрд╡ рдХреА рд╕реНрдерд┐рддрд┐ рдкреВрд░реА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ: рдпрд╣ рдпрд╛ рддреЛ рдЙрд╕рдХреЗ рджреЛ рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ рд╕реЗ рдХрдо рд╣реИ рдпрд╛ рдЕрдзрд┐рдХ рд╣реИред рдпрд╣ рд▓рдВрдмрд╛рдИ
N
рдХреЗ рдЕрдВрдХреЛрдВ рдХреЗ sawtooth рджреГрд╢реНрдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ
N
рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдирд┐рд░реНрдгрдпрд╕рдВрдХреНрд░рдордг рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
1) рдбрд╛рдпрдирд╛рдорд┐рдХреНрд╕ рд╕реНрдерд┐рддрд┐:
dp[n][last][less]
-
last
рдЕрдВрдХ рдХреЗ рд╕рд╛рде рд▓рдВрдмрд╛рдИ
n
рдХреЗ рдЖрд░реА рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред рдФрд░ рдпрджрд┐
less == 0
, рддреЛ рдЕрдВрддрд┐рдо рдЕрдВрдХ рдПрдХ рд╕реЗ рдХрдо рд╣реИ, рдФрд░ рдпрджрд┐
less == 1
, рддреЛ рдЕрдзрд┐рдХ рд╣реИред
2) рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп:
for last in range(10): dp[2][last][0] = 9 - last dp[2][last][1] = last
3) рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХреА рдкреБрдирд░реНрдЧрдгрдирд╛:
for prev in range(10): if prev > last: dp[n][last][0] += dp[n - 1][prev][1] if prev < last: dp[n][last][1] += dp[n - 1][pref][0]
4) рдкреБрдирд░реНрдЧрдгрдирд╛ рдЖрджреЗрд╢: рд╣рдо рд╣рдореЗрд╢рд╛ рдкрд┐рдЫрд▓реА рд▓рдВрдмрд╛рдИ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╕рд┐рд░реНрдл рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдиреЗрд╕реНрдЯреЗрдб рд╣реИред
5) рдЙрддреНрддрд░ рдпреЛрдЧ
dp[N][0..9][0..1]
ред
рдЕрдм рд╣рдореЗрдВ рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡реЗрдХреНрдЯрд░ рдФрд░ рдПрдХ рд╕рдВрдХреНрд░рдордг рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рд╡реЗрдХреНрдЯрд░ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ: рд╕рднреА рд░рд╛рдЬреНрдп рдЕрдиреБрдХреНрд░рдо
N
рдХреА рд▓рдВрдмрд╛рдИ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВ
N
рдЦреИрд░, рд░реВрдкрд╛рдВрддрд░рдг рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╡реНрдпреБрддреНрдкрдиреНрди рд╣реИ, рд░реВрдкрд╛рдВрддрд░рдг рд╕реВрддреНрд░реЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдПред
рд╡реЗрдХреНрдЯрд░ рдФрд░ рд╕рдВрдХреНрд░рдордг рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕рдмрд╕рд┐рдбреА рдбрд╛рдпрдиреЗрдорд┐рдХреНрд╕
рдпрд╣ рдПрдХ рдбрд╛рдпрдирд╛рдорд┐рдХреНрд╕ рдХреНрд▓рд╛рд╕ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд░рд╛рдЬреНрдп рдХрд┐рд╕реА рдРрд░реЗ рдХреА рдЕрдзреАрдирддрд╛ рдХреА рд╕реАрдорд╛ рд╣реИред рд▓рдмреНрдмреЛрд▓реБрдЖрдм рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рд╕рд░рдгреА рдХреЗ рд╕рднреА рд╕рдВрднрд╡ рдЙрдк-рдЦрдВрдбреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрдк-рдореБрдЦреМрдЯреЗ рдХреЗ рдЙрддреНрддрд░реЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рдЙрдиреНрд╣реЗрдВ рдмрдврд╝рддреА рд▓рдВрдмрд╛рдИ рдХреЗ рдХреНрд░рдо рдореЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЧрдгрдирд╛ рдЫреЛрдЯреЗ рдЦрдВрдбреЛрдВ рдкрд░ рдХреНрд░рдорд╢рдГ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрддреА рд╣реИред
рдЙрджрд╛рд╣рд░рдг 4: рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреИрдХрд┐рдВрдЧ
рдпрд╣рд╛рдБ
рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕реНрдерд┐рддрд┐ рд╣реИ ред рдореИрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдмрддрд╛рдКрдВрдЧрд╛:
рдПрдХ рд╕рдВрдХреБрдЪрд┐рдд рд░реЗрдЦрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:
1) рдХреЗрд╡рд▓ рдЕрдХреНрд╖рд░реЛрдВ рд╕реЗ рдпреБрдХреНрдд рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдПрдХ рд╕рдВрдХреБрдЪрд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИред рд╡рд╣ рдЦреБрдж рдХреЛ рдЕрд╢реБрджреНрдз рдХрд░рддреА рд╣реИред
2) рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬреЛ рджреЛ рд╕рдВрдХреБрдЪрд┐рдд рддрд╛рд░реЛрдВ
A
рдФрд░
B
рдХрд╛ рдПрдХ рд╕рдВрдпреЛрдЬрди рд╣реИ
B
рдЗрд╕рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ
A
рдФрд░
B
рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
B
3) рд╕реНрдЯреНрд░рд┐рдВрдЧ
D(X)
, рдЬрд╣рд╛рдВ
D
1
рд╕реЗ рдЕрдзрд┐рдХ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИ, рдФрд░
X
рдПрдХ рд╕рдВрдХреБрдЪрд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИред рдпрд╣
X
рд╕реЗ рд╡рд┐рдШрдЯрд┐рдд
D
рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд╕рдВрдШрдЯрди рдореЗрдВ рд╡рд┐рдШрдЯрд┐рдд рд╣реЛрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг:
тАЬ3(2(A)2(B))CтАЭ
тАЬAABBAABBAABBCтАЭ
рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реИред
рдпрд╣ рд▓рд╛рдЗрди
s
рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рд╕рдмрд╕реЗ рдЫреЛрдЯреА рд╕рдВрдХреБрдЪрд┐рдд рд▓рд╛рдЗрди рдХреА рд▓рдВрдмрд╛рдИ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рдПред
рдирд┐рд░реНрдгрдпрдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рд░рд╣реА рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╢рд╛рдпрдж рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рдЪреБрдХреЗ рд╣реИрдВ, рдЙрдк-рдЦрдВрдбреЛрдВ рдХреА рдЧрддрд┐рд╢реАрд▓рддрд╛ рд╕реЗред
1) рдбрд╛рдпрдиреЗрдорд┐рдХреНрд╕ рд╕реНрдерд┐рддрд┐:
d[l][r]
- рдиреНрдпреВрдирддрдо рд▓рдВрдмрд╛рдИ рдХреА рдПрдХ рд╕рдВрдХреБрдЪрд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ
s[l:r]
рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реЛрддреА рд╣реИ
2) рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛: рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рднреА рд╕рдмреНрд╕рдЯреНрд░реЗрдЯ рдХреЗрд╡рд▓ рдЙрдирдореЗрдВ рд╕рдВрдкреАрдбрд╝рд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
3) рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХреА рдкреБрдирд░реНрдЧрдгрдирд╛:
рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рдЙрддреНрддрд░ рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдВрддрд┐рдо рд╕рдВрдкреАрдбрд╝рди рдСрдкрд░реЗрд╢рди рд╣реЛрддрд╛ рд╣реИ: рдпрд╛ рддреЛ рдпрд╣ рдХреЗрд╡рд▓ рдмрдбрд╝реЗ рдЕрдХреНрд╖рд░реЛрдВ рдХрд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ, рдпрд╛ рдпрд╣ рджреЛ рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдпреЛрдЬрди рд╣реИ, рдпрд╛ рд╕реНрд╡рдпрдВ рд╕рдВрдкреАрдбрд╝рди рд╣реИред рддреЛ рдЪрд▓реЛ рд╕рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдПрдХ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВред
dp_len = r - l dp[l][r] = dp_len
4) рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛: рдШрдЯрд┐рдпрд╛ рдпрд╛ рдЖрд▓рд╕реА рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХреА рд╕реАрдзреА рдЖрд░реЛрд╣реА рд▓рдВрдмрд╛рдИред
5) рдЙрддреНрддрд░
d[0][len(s)]
рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдирдВрдмрд░ 5: рдУрдХреНрд╕
рд╕рдмрдЯреНрд░реА рдбрд╛рдпрдирд╛рдорд┐рдХреНрд╕
рдЙрдкрдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЧрддрд┐рдХреА рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдЖрдорддреМрд░ рдкрд░ рдЙрд╕ рдЙрдкрдкреНрд░рдХрд╛рд░ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реБрдП рдПрдХ рд╢реАрд░реНрд╖ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╢реАрд░реНрд╖ рдореВрд▓ рд╣реИред рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХрд╛ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЖрдорддреМрд░ рдкрд░ рдЕрдкрдиреЗ рд╕рднреА рдмрдЪреНрдЪреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЬреНрдпрд╛рджрд╛рддрд░ рд╡реЗ рдЗрд╕реЗ рдЖрд▓рд╕реА рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ - рд╡реЗ рдмрд╕ рдкреЗрдбрд╝ рдХреА рдЬрдбрд╝ рд╕реЗ рдЧрд╣рд░рд╛рдИ рдореЗрдВ рдЦреЛрдЬ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг 6: рддрд╛рд░реНрдХрд┐рдХ рдкреЗрдбрд╝
рдПрдХ рдирд┐рд▓рдВрдмрд┐рдд рдкреЗрдбрд╝ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдкрддреНрддрд┐рдпреЛрдВ рдореЗрдВ рдПрдХрд▓-рдмрд┐рдЯ рд╕рдВрдЦреНрдпрд╛ рд╣реЛрддреА рд╣реИ -
0
рдпрд╛
1
ред рд╕рдВрдЦреНрдпрд╛рдПрдБ рд╕рднреА рдЖрдВрддрд░рд┐рдХ рд╢реАрд░реНрд╖рдХреЛрдВ рдореЗрдВ рднреА рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рдпрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░: рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреЗ рд▓рд┐рдП рддрд╛рд░реНрдХрд┐рдХ рдкрд░рд┐рдЪрд╛рд▓рдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: "AND" рдпрд╛ "OR"ред рдпрджрд┐ рдпрд╣ "рдФрд░" рд╣реИ, рддреЛ рдЪреЛрдЯреА рдХрд╛ рдореВрд▓реНрдп рдЙрд╕рдХреЗ рд╕рднреА рдмрдЪреНрдЪреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рддрд╛рд░реНрдХрд┐рдХ "рдФрд░" рд╣реИред рдпрджрд┐ "рдУрдЖрд░" рд╣реИ, рддреЛ рд╡рд░реНрдЯреЗрдХреНрд╕ рдХрд╛ рдореВрд▓реНрдп рдЙрд╕рдХреЗ рд╕рднреА рдмрдЪреНрдЪреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдПрдХ рддрд╛рд░реНрдХрд┐рдХ "рдУрдЖрд░" рд╣реИред

рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рддрд╛рд░реНрдХрд┐рдХ рдкрд░рд┐рдЪрд╛рд▓рдиреЛрдВ рдореЗрдВ рдиреНрдпреВрдирддрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЬрдбрд╝ рдореЗрдВ рдореВрд▓реНрдп рдкрд░рд┐рд╡рд░реНрддрди рдпрд╛ рд╕реВрдЪрд┐рдд рдХрд░рдирд╛ рдХрд┐ рдпрд╣ рдЕрд╕рдВрднрд╡ рд╣реИред
рдирд┐рд░реНрдгрдп1) рдбрд╛рдпрдирд╛рдорд┐рдХреНрд╕ рд╕реНрдерд┐рддрд┐: d[v][x]
- рд╢реАрд░реНрд╖ рдкрд░ x
рдХрд╛ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЪрд╛рд▓рди рдХреА рд╕рдВрдЦреНрдпрд╛ред рдпрджрд┐ рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рддреЛ рд░рд╛рдЬреНрдп рдореВрд▓реНрдп +inf
ред
2) рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп: рдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╡реНрдпрдХреНрддрд┐ рд╢реВрдиреНрдп рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдХрд╛ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдЕрд░реНрдерд╛рдд рдпрд╣ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ +inf
рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдПред
3) рдкреБрдирд░реНрдЧрдгрдирд╛ рд╕реВрддреНрд░:
рдпрджрд┐ рд╢реАрд░реНрд╖ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорд╛рди x
, рддреЛ рд╢реВрдиреНрдп рд╣реИред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ: рд╡рд░реНрддрдорд╛рди рд╢реАрд░реНрд╖ рдкрд░ рдСрдкрд░реЗрд╢рди рдХреЛ рдмрджрд▓реЗрдВ рдпрд╛ рдирд╣реАрдВред рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдЦреЛрдЬрдиреЗ рдФрд░ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдЪреБрдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдпрджрд┐ рдСрдкрд░реЗрд╢рди "рдФрд░" рдФрд░ рдЖрдкрдХреЛ "0" рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рдиреНрдпреВрдирддрдо рдорд╛рди d[i][0]
, рдЬрд╣рд╛рдВ i
v
рдХрд╛ рдмреЗрдЯрд╛ i
ред
рдпрджрд┐ рдСрдкрд░реЗрд╢рди "рдФрд░" рдФрд░ рдЖрдкрдХреЛ "1" рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЙрддреНрддрд░ рд╕рднреА рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдпреЛрдЧ рд╣реИ d[i][1]
, рдЬрд╣рд╛рдВ i
v
рдХрд╛ рдмреЗрдЯрд╛ i
ред
рдпрджрд┐ рдСрдкрд░реЗрд╢рди "рдУрдЖрд░" рдФрд░ рдЖрдкрдХреЛ "0" рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЙрддреНрддрд░ рд╕рднреА рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдпреЛрдЧ рд╣реИ d[i][0]
, рдЬрд╣рд╛рдВ i
v
рдХрд╛ рдмреЗрдЯрд╛ i
ред
рдпрджрд┐ рдСрдкрд░реЗрд╢рди "рдУрдЖрд░" рдФрд░ рдЖрдкрдХреЛ "1" рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рдиреНрдпреВрдирддрдо рдорд╛рди d[i][1]
, рдЬрд╣рд╛рдВ i
v
рдХрд╛ рдмреЗрдЯрд╛ i
ред
4) рдкреБрдирд░реНрдЧрдгрдирд╛ рдХреНрд░рдо: рдпрд╣ рд╕рдмрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдЖрд▓рд╕реА рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЬрдбрд╝ рд╕реЗ рдЧрд╣рд░рд╛рдИ рдореЗрдВ рдЦреЛрдЬ рдХреЗ рд░реВрдк рдореЗрдВред
5) рдЙрддреНрддрд░ d[root][value[root] xor 1]
ред
рд╕рдмрд╕реЗрдЯ рдбрд╛рдпрдирд╛рдорд┐рдХреНрд╕
рд╕рдмрд╕реЗрдЯ рдкрд░ рдбрд╛рдпрдирд╛рдорд┐рдХреНрд╕ рдореЗрдВ, рджрд┐рдП рдЧрдП рд╕реЗрдЯ рдХрд╛ рдПрдХ рдореБрдЦреМрдЯрд╛ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рд░рд╛рдЬреНрдп рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИред рд╡реЗ рдЗрд╕ рдореБрдЦреМрдЯрд╛ рдореЗрдВ рдЗрдХрд╛рдЗрдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рдХреНрд░рдо рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЪреБрдиреЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдЧрдП рд░рд╛рдЬреНрдпреЛрдВ рд╕реЗ рдХреНрд░рдорд╢: рдЫреЛрдЯреЗ рд╣реЛрддреЗ рд╣реИрдВред рдЖрдорддреМрд░ рдкрд░ рдЖрд▓рд╕реА рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдХрднреА-рдХрднреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддреБрдЪреНрдЫ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдирдВрдмрд░ 7: рдиреНрдпреВрдирддрдо рд╡рдЬрди рдХрд╛ рд╣реИрдорд┐рд▓реНрдЯрди рдЪрдХреНрд░, рдпрд╛ рдпрд╛рддреНрд░рд╛ рд╡рд┐рдХреНрд░реЗрддрд╛ рд╕рдорд╕реНрдпрд╛
рдПрдХ рднрд╛рд░рд┐рдд (рдмрдврд╝рдд рднрд╛рд░ рдЧреИрд░-рдЛрдгрд╛рддреНрдордХ) рдЧреНрд░рд╛рдл
G
рдЖрдХрд╛рд░
N
рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП
N
рдиреНрдпреВрдирддрдо рд╡рдЬрди рдХреЗ рдПрдХ
рд╣реИрдорд┐рд▓реНрдЯрдирд┐рдпрди рдЪрдХреНрд░ (рдЖрддреНрдо-рдЪреМрд░рд╛рд╣реЛрдВ рдХреЗ рдмрд┐рдирд╛ рд╕рднреА рдХреЛрдиреЗ рд╕реЗ рдЧреБрдЬрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЪрдХреНрд░) рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВред
рдирд┐рд░реНрдгрдпрдЪреВрдВрдХрд┐ рд╣рдо рд╕рднреА рдЪрдХреНрдХрд░реЛрдВ рд╕реЗ рдЧреБрдЬрд░рдиреЗ рд╡рд╛рд▓реЗ рдЪрдХреНрд░ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо "рдкреНрд░рд╛рд░рдВрднрд┐рдХ" рд╢реАрд░реНрд╖ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕реЗ рд╢реАрд░реНрд╖ рд╕рдВрдЦреНрдпрд╛
0
ред
1) рдбрд╛рдпрдиреЗрдорд┐рдХреНрд╕ рд╕реНрдерд┐рддрд┐:
dp[mask][v]
- рд╡рд░реНрдЯреЗрдХреНрд╕
0
рд╕реЗ рд╡рд░реНрдЯреЗрдХреНрд╕
v
рддрдХ рдХреЗ рдиреНрдпреВрдирддрдо рд╡рдЬрди рдХрд╛ рдорд╛рд░реНрдЧ, рд╕рднреА рд▓рдВрдмреЛрдВ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реБрдП рдЬреЛ
mask
рдФрд░ рдХреЗрд╡рд▓ рдЙрдирдХреЗ рд╕рд╛рде рд╣реЛрддреЗ рд╣реИрдВред
2) рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп:
dp[1][0] = 0
, рдЕрдиреНрдп рд╕рднреА рд░рд╛рдЬреНрдп рд╢реБрд░реВ рдореЗрдВ -
+inf
ред
3) рдкреБрдирд░реНрдЧрдгрдирд╛ рд╕реВрддреНрд░: рдпрджрд┐
mask
рдореЗрдВ ith рдмрд┐рдЯ
1
рдФрд░
i
рд╕реЗ
v
рддрдХ рдПрдХ рдзрд╛рд░ рд╣реИ, рддреЛ:
dp[mask][v] = min(dp[mask][v], dp[mask - (1 << i)][i] + w[i][v])
рдЬрд╣рд╛рдВ
w[i][v]
i
рд╕реЗ
v
рддрдХ рдХрд┐рдирд╛рд░реЗ рдХрд╛ рд╡рдЬрди рд╣реИред
4) рд░реВрдкрд╛рдВрддрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛: рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдФрд░ рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рдЖрд▓рд╕реА рдЧрддрд┐рдХреА рд▓рд┐рдЦрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕рдореЗрдВ рдПрдХрд▓ рдмрд┐рдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЦреМрдЯреЗ рдХреА рдЧрдгрдирд╛ рдХреЛ рд╡рд┐рдХреГрдд рдФрд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред
5) рдЙрддреНрддрд░
d[(1 << N) - 1][0]
рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред
рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЧрддрд┐рд╢реАрд▓рддрд╛
рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдЧрддрд┐рд╢реАрд▓рддрд╛ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╢рд╛рд╕реНрддреНрд░реАрдп рд╕рдорд╕реНрдпрд╛рдПрдВ рдХреБрдЫ рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рд╕рд╛рде рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЯрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд┐рднрд┐рдиреНрди рдЪреАрдЬреЛрдВ рд╕реЗ рдкреВрдЫрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреНрдпреВрдирддрдо рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрд▓рд┐рдВрдЧ рдпрд╛ рдЯрд╛рдЗрд▓рд┐рдВрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред
рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдВрдкреВрд░реНрдг рдЦреЛрдЬ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рдЬрд╣рд╛рдВ
a
рд╕реЗрд▓ рдХреЗ рдЯрд╛рдЗрд▓рд┐рдВрдЧ рдХреЗ рдХрдИ рдкреНрд░рдХрд╛рд░ рд╣реИрдВред рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдбрд╛рдпрдиреЗрдорд┐рдХреНрд╕ рд░реИрдЦрд┐рдХ рдХреЗ рдЖрдпрд╛рдореЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд╕рдордп рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдЧреБрдгрд╛рдВрдХ рдХреЛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдЖрдкрдХреЛ рдРрд╕рд╛ рдХреБрдЫ рдорд┐рд▓рддрд╛ рд╣реИ:

ред
рдПрдХ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓
k
(рдЕрдХреНрд╕рд░ рдПрдХ) рдХреЙрд▓рдо рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЯрд╛рдЗрд▓ рд╡рд╛рд▓реЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рдмреАрдЪ рдХреА рд╕реАрдорд╛ рд╣реИ рдФрд░ рдЕрднреА рддрдХ рдЯрд╛рдЗрд▓ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕реАрдорд╛ рдХреЗрд╡рд▓ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рднрд░реА рд╣реБрдИ рд╣реИред рдмрд╣реБрдд рдмрд╛рд░ рдпрд╣ рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрддрд╛ рд╣реИред

рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛, рдПрдХ рд░рд╛рдЬреНрдп рдПрдХ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╣реИ рдФрд░ рдпрд╣ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХрд╣рд╛рдБ рд╣реИред рдФрд░ рд╕рдВрдХреНрд░рдордг рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рдЗрд╕ рд╕реНрдерд╛рди рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред рдЖрдк рдпрд╣ рдкрддрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдордп рдореЗрдВ рдПрдХ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдпрд╣ рд╣рд░ рдмрд╛рд░ рдЯреЛрд╣ рдХреЗ рджреМрд░рд╛рди рдЬрд╛рдВрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рднреА рдЧрд┐рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рджреЛ рдЖрдпрд╛рдореА рд╕рд░рдгреА рдХреА рдЧрдгрдирд╛
can[mask][next_mask]
- рдХреНрдпрд╛ рдПрдХ рдЖрдВрдХрдбрд╝реЗ рд╕реЗ рджреВрд╕рд░реЗ рдХреА рдУрд░ рдмрдврд╝рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдПрдХ рд╕реЗ рдмрдврд╝ рдЬрд╛рдПред рдпрджрд┐ рдЖрдк рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХрдо рд╕рдордп рд▓рдЧреЗрдЧрд╛, рдФрд░ рдЕрдзрд┐рдХ рдореЗрдореЛрд░реАред
рдЙрджрд╛рд╣рд░рдг рд╕рдВрдЦреНрдпрд╛ 8: рдбреЛрдорд┐рдиреЛрдЬрд╝ рд╡рд░реНрдЪрд╕реНрд╡
1
x
2
рдФрд░
2
x
1
рдЖрдпрд╛рдо рд╡рд╛рд▓реЗ рдбреЛрдорд┐рдиреЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддрд╛рд▓рд┐рдХрд╛
N
x
M
рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬреНрдЮрд╛рдд рдХрд░реЗрдВред
рдирд┐рд░реНрдгрдпрдпрд╣рд╛рдБ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдПрдХ рдПрдХрд▓ рд╕реНрддрдВрдн рд╣реИред рдмрд╛рдЗрдирд░реА рдорд╛рд╕реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реЗ рд╕реНрдЯреЛрд░ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ:
0
- рдЯрд╛рдЗрд▓ рд╡рд╛рд▓реЗ рдХреЙрд▓рдо рд╕реЗрд▓ рдирд╣реАрдВ,
1
- рдЯрд╛рдЗрд▓ рд╡рд╛рд▓реЗред рдпрд╛рдиреА рдХреБрд▓ рдкреНрд░реЛрдлрд╛рдЗрд▓

ред
0) рдкреВрд░реНрд╡-рдЧрдгрдирд╛ (рд╡реИрдХрд▓реНрдкрд┐рдХ): рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЗ рд╕рднреА рдЬреЛрдбрд╝реЗ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░реЗрдВ рдФрд░ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдПрдХ рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдХрд╛рд░реНрдп рдореЗрдВ, рдЗрд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рдпрджрд┐ рдЕрдЧрд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдкрд╣рд▓реА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓
1
, рддреЛ рджреВрд╕рд░реЗ рдореЗрдВ рдпрд╣
0
рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдХрд┐рд╕реА рднреА рдЖрдХреГрддрд┐ рдХреЗ рд╕рд╛рде рдЗрд╕ рд╕реЗрд▓ рдХреЛ рдкреБрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрджрд┐ рдЕрдЧрд▓реА рдЬрдЧрд╣ рдкрд╣рд▓реА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓
0
, рддреЛ рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ - рдпрд╛ рддреЛ рджреВрд╕рд░реЗ
0
рдпрд╛
1
ред
рдпрджрд┐
0
, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рд╡рд░реНрдЯрд┐рдХрд▓ рдбреЛрдорд┐рдиреЛрдЬрд╝ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЕрдЧрд▓реА рд╕реЗрд▓ рдХреЛ
1
рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐
1
, рддреЛ рд╣рдо рдПрдХ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдбреЛрдорд┐рдиреЛрдЬрд╝ рд▓рдЧрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЕрдЧрд▓реЗ рд╕реЗрд▓ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВред
рд╕рдВрдХреНрд░рдордг рдХреЗ рдЙрджрд╛рд╣рд░рдг (рдКрдкрд░реА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЖрдк рдирд┐рдЪрд▓реЗ рд▓реЛрдЧреЛрдВ рддрдХ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдЙрдирдореЗрдВ):

рдЙрд╕рдХреЗ рдмрд╛рдж, рдПрд░реЗ рдХреЛ рд╕рдм рдХреБрдЫ рдмрдЪрд╛
can[mask][next_mask]
-
1
, рдЕрдЧрд░ рдЖрдк рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ
0
- рдЕрдЧрд░ рдЖрдк рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
1) рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХреА рдЕрд╡рд╕реНрдерд╛:
dp[pos][mask]
- рдкрд╣рд▓реЗ
pos - 1
рдХреЗ рдкреВрд░реНрдг рдЭреБрдХрд╛рд╡ рдХреА рд╕рдВрдЦреНрдпрд╛
pos - 1
рдкреНрд░реЛрдлрд╛рдЗрд▓
mask
рд╕рд╛рде
pos - 1
рдХреЙрд▓рдоред
2) рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛:
dp[0][0] = 1
- рдХреНрд╖реЗрддреНрд░ рдХреА рдмрд╛рдИрдВ рд╕реАрдорд╛ рдПрдХ рд╕реАрдзреА рджреАрд╡рд╛рд░ рд╣реИред
3) рдкреБрдирд░реНрдЧрдгрдирд╛ рд╕реВрддреНрд░:
dp[pos][mask] += dp[pos - 1][next_mask] * can[mask][next_mask]
4) рдмрд╛рдпрдкрд╛рд╕ рдЖрджреЗрд╢ - рдмрдврд╝рддреА рд╣реБрдИ
pos
рдХреНрд░рдо рдореЗрдВред
5) рдЙрддреНрддрд░ dp [рд╕реНрдерд┐рддрд┐] [0] рдореЗрдВ рд╣реИред
рдкрд░рд┐рдгрд╛рдореА рд╕реНрдкрд░реНрд╢реЛрдиреНрдореБрдЦрддрд╛ рд╣реИ

ред
рдЯреВрдЯреА рд╣реБрдИ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреА рдЧрддрд┐рд╢реАрд▓рддрд╛
рдпрд╣ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреА рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХрд╛ рдПрдХ рдмрд╣реБрдд рдордЬрдмреВрдд рдЕрдиреБрдХреВрд▓рди рд╣реИред рдпрд╣рд╛рдВ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рди рдХреЗрд╡рд▓ рдПрдХ рдореБрдЦреМрдЯрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдлреНрд░реИрдХреНрдЪрд░ рд╕рд╛рдЗрдЯ рднреА рд╣реИред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдЕрдм, рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдХрд┐рдВрдХ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЕрдЧрд▓реЗ рд░рд╛рдЬреНрдп рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдПрдХ рдЖрдХреГрддрд┐ рдЬреЛрдбрд╝рдХрд░, рдХрд┐рдВрдХ рдХреЗ рдмрд╛рдПрдВ рд╕реЗрд▓ рдХреЛ рдХрд╡рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣реА рд╣реИ,
N
рдПрдХ рдХрд╛рд░рдХ рджреНрд╡рд╛рд░рд╛ рд░рд╛рдЬреНрдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХрд░рдХреЗ (рд╣рдореЗрдВ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдмреНрд░реЗрдХ рдХрд╣рд╛рдВ рд╣реИ), рд╣рдордиреЗ рдПрдХ рд░рд╛рдЬреНрдп рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░ рджрд┐рдпрд╛

рдХреЛ

ред рдПрд╕рд┐рдореНрдкреЛрдЯрд┐рдХреНрд╕ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реБрдЖ

рдХреЛ

ред
рдбреЛрдорд┐рдиреЛрдЬ рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрд▓рд┐рдВрдЧ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг рджреНрд╡рд╛рд░рд╛ рдПрдХ рдЯреВрдЯреА рд╣реБрдИ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдЧрддрд┐рд╢реАрд▓рддрд╛ рдореЗрдВ рд╕рдВрдХреНрд░рдордг (рдЙрджрд╛рд╣рд░рдг рд╕рдВрдЦреНрдпрд╛ 8):

рдЙрддреНрддрд░ рд╡рд╕реВрд▓реА
рдХрднреА-рдХрднреА рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рдЙрддреНрддрд░ рдХреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдЬрд╛рдирдирд╛ рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд╛рд░реНрдп "рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреИрдХрд┐рдВрдЧ" (рдЙрджрд╛рд╣рд░рдг рд╕рдВрдЦреНрдпрд╛ 4) рдореЗрдВ, рд╣рдо рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рдЫреЛрдЯреА рд╕рдВрдкреАрдбрд╝рд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕рдХреА рд▓рдВрдмрд╛рдИ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдЙрддреНрддрд░ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдХрд╛ рдЙрддреНрддрд░ рдмрд╣рд╛рд▓ рдХрд░рдиреЗ рдХрд╛ рдЕрдкрдирд╛ рддрд░реАрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдЖрдо:
- рдбрд╛рдпрдирд╛рдорд┐рдХреНрд╕ рдЕрд╡рд╕реНрдерд╛ рдХреЗ рдорд╛рди рдХреЗ рдЖрдЧреЗ рдЙрдк-рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд░рдЦреЗрдВред рдпрджрд┐ рдЙрддреНрддрд░ рдХреБрдЫ рдмрдбрд╝рд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдЖрдорддреМрд░ рдкрд░ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред
- рджреА рдЧрдИ рд╕реНрдерд┐рддрд┐ рдХреЗ рдкреВрд░реНрд╡рдЬ (рдУрдВ) рдХреЛ рдЬрд╛рдирддреЗ рд╣реБрдП, рдЙрддреНрддрд░ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рдЕрдХреНрд╕рд░ рдЖрдк рдЙрддреНрддрд░ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдпрд╣ рдЬрд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдПрдХ рд╣реА "рд▓рд╛рдЗрди рдкреИрдХрд┐рдВрдЧ" рдореЗрдВ, рдЙрддреНрддрд░ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо рдХрд╛рд░реНрд░рд╡рд╛рдИ рдФрд░ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рд╕реЗ рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╕реЗ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
- рдПрдХ рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХреА рдкреБрдирд░реНрдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЕрдВрдд рд╕реЗ рд╕рд░реНрд╡реЛрддреНрддрдо рдкрде рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд╕рдбрд╝рдХ рдХреЗ рд╕рд╛рде рдЙрддреНрддрд░ рд▓рд┐рдЦреЗрдВред
рдорд╛рдореВрд▓реА рдЕрдиреБрдХреВрд▓рди
рд╕реНрдореГрддрд┐
рдЕрдХреНрд╕рд░ рдЧрддрд┐рдХреА рдореЗрдВ рдЖрдк рдПрдХ рдРрд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд░рд╛рдЬреНрдп рдХреЛ рдЕрдиреНрдп рд░рд╛рдЬреНрдпреЛрдВ рдХреА рдмрд╣реБрдд рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо рджреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдкрд┐рдЫрд▓реЗ рд╡рд╛рд▓реЗ рдХреА рдУрд░ рдХрднреА рдирд╣реАрдВ рдореБрдбрд╝реЗрдВрдЧреЗред рддреЛ, рдЖрдк рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рдореЗрдореЛрд░реА рдореЗрдВ рд╕реНрдЯреЛрд░ рди рдХрд░реЗрдВред рдХрднреА-рдХрднреА рдпрд╣ рд╕реНрдкрд░реНрд╢реЛрдиреНрдореБрдЦ рд╕реНрдореГрддрд┐ рдЕрдиреБрдорд╛рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг рд╕рдВрдЦреНрдпрд╛ 1, рдирдВрдмрд░ 2, рдирдВрдмрд░ 3 (рд╕рдВрдХреНрд░рдордг рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдмрд┐рдирд╛ рд╕рдорд╛рдзрд╛рди рдореЗрдВ), рдирдВрдмрд░ 7 рдФрд░ рдирдВрдмрд░ 8 рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдЪ рд╣реИ, рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдпрджрд┐ рдмрд╛рдИрдкрд╛рд╕ рдЖрджреЗрд╢ рдЖрд▓рд╕реА рдЧрддрд┐рд╢реАрд▓рддрд╛ рд╣реИред
рд╕рдордп
рдпрд╣ рдХрднреА-рдХрднреА рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрд╕рдордорд┐рдд рд╕рдордп рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рджрд┐рдХреНрдЬрд╕реНрдЯреНрд░рд╛ рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ, рдЖрдк рд╕реНрдкрд░реНрд╢реЛрдиреНрдореБрдЦ рд╕рдордп рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП
рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХрддрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд░рд╛рдЬреНрдп рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди
рдирд┐рд░реНрдгрдпреЛрдВ рдореЗрдВ, рдЧрддрд┐рд╢реАрд▓рддрд╛ рдореЗрдВ рд╣рдореЗрд╢рд╛ рдПрдХ рд░рд╛рдЬреНрдп рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИ - рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдЙрдкрдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд░рд╛рдЬреНрдп рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред
рдХрднреА-рдХрднреА рдЖрдк рдЕрдиреНрдп рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдЖ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рд╕реЗ рд╕реНрдкрд░реНрд╢реЛрдиреНрдореБрдЦ рд╕рдордп рдпрд╛ рд╕реНрдореГрддрд┐ рдореЗрдВ рдХрдореА рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВредрдЙрджрд╛рд╣рд░рдг рд╕рдВрдЦреНрдпрд╛ 9: рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЕрдкрдШрдЯрди
рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╡рд┐рдШрдЯрди рдХреА рд╕рдВрдЦреНрдпрд╛ N
рдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╢рдмреНрджреЛрдВ рдореЗрдВ рдЬреНрдЮрд╛рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ N = 7
, рддреЛ рдРрд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░ 5
:- 7
- 3 + 4
- реи + рел
- 1 + 7
- 1 + 2 + 4
рд╡рд┐рднрд┐рдиреНрди рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рд╕рд╛рде рджреЛ рд╕рдорд╛рдзрд╛рдитДЦ1:
1) :
dp[n][k]
тАФ
n
,
k
.
k
, , .
2) :
dp[1][1] = 1
,
dp[1][i] = 0
.
3) :
for last_summand in range(1, k + 1): dp[n][k] += dp[n - last_summand][last_summand]
4) : ,
n
.
5) тАФ
dp[N][1..N]
.
:

, :

ред Asymptotics:

ред
тДЦ2:
1) . dp[n][k] тАФ
n
k
. , .
2) :
dp[1][1] = 1
,
dp[1][i] = 0
.
3) :
dp[n][k] = dp[n - k][k] + dp[n - k][k - 1]
, . ( ) :
,
:

.
, тАФ . тАФ , , тАФ : .
4) : ,
n
.
,

,

. , тАФ
k
N
,

(
1
k
). ,

ред
5) тАФ
dp[N][1..k_max]
.
Asymptotics:

ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдореБрдЦреНрдп рд╕реНрд░реЛрдд рдкреНрд░рдореБрдЦ рдерд╛, рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рд╕рдорд░ рдХрдВрдкреНрдпреВрдЯрд░ рд╕реНрдХреВрд▓ (рд╕реНрдХреВрд▓реА рдмрдЪреНрдЪреЛрдВ рдХреЗ рд▓рд┐рдП), рдФрд░ рд╕рд╛рде рд╣реА рдЖрдВрджреНрд░реЗрдИ рд╕реНрдЯреИрдВрдХреЗрд╡рд┐рдЪ рдХреЗ рд╕рд░реНрдХрд▓ рдФрд░ рдорд┐рдЦрд╛рдЗрд▓ рдбреНрд╡реЛрд░реНрдХрд┐рди ( рдбрд╛рд░рд▓реЗ ) рдХреЗ рд╡рд┐рд╢реЗрд╖ рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рд╡реНрдпрд╛рдЦреНрдпрд╛рди рд╕реЗ рдорд┐рд▓реА редрдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ! рдпрджреНрдпрдкрд┐ рдореИрдВ рдХрд╛рдо рдореЗрдВ рдЖрдпрд╛ рд╣реВрдБ - рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрдирд╛ рд╕рдм рдХреБрдЫ рдпрд╛рдж рд░рдЦрдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред