рд╕рдм рдХреБрдЫ рдЖрдк рдЧрддрд┐рд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ, рд▓реЗрдХрд┐рди рдкреВрдЫрдиреЗ рд╕реЗ рдбрд░рддреЗ рдереЗ

рдореИрдВ рдЧрддрд┐рд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ (рдмрд╛рдж рдореЗрдВ рдмрд╕ рдбрд╛рдпрдирд╛рдорд┐рдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд▓реЗрдЦ рдкрд╛рдХрд░ рдмреЗрд╣рдж рд╣реИрд░рд╛рди рдерд╛ рдпрд╣ рд╣рдореЗрд╢рд╛ рдореБрдЭреЗ рдкреНрд░рддреАрдд рд╣реБрдЖ рдХрд┐ рдпрд╣ рдкреНрд░рддрд┐рдорд╛рди рдХрд╛рдлреА рд╡реНрдпрд╛рдкрдХ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдУрд▓рд┐рдВрдкрд┐рдпрд╛рдбреНрд╕ рдХреА рд╕реАрдорд╛рдУрдВ рд╕реЗ рдкрд░реЗ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЕрдкрдиреЗ рд▓реЗрдЦ рдХреЗ рд╕рд╛рде рдЗрд╕ рдЕрдВрддрд░ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

#        Python 

рдореВрд▓ рдмрд╛рддреЗрдВ


рд╢рд╛рдпрдж рдПрдХ рд╡рд╛рдХреНрдп рдореЗрдВ рдореИрдВрдиреЗ рдбрд╛рдпрдирд╛рдорд┐рдХреНрд╕ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд░реНрдгрди рд╕реБрдирд╛ рд╣реИ:

рдбрд╛рдпрдиреЗрдорд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд╛рд░реНрдп рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдФрд░ рд╣рдо рдЗрд╕реЗ рдЫреЛрдЯреЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рддреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ рдпрд╣ рднреА рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПред (c) рдПред рдХреБрдореЛрдХ

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

рдкреБрдирд░реНрдЧрдгрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛


рддреАрди рд░реВрдкрд╛рдВрддрд░рдг рдЖрджреЗрд╢ рд╣реИрдВ:
1) рдкреНрд░рддреНрдпрдХреНрд╖ рдЖрджреЗрд╢:
рд░рд╛рдЬреНрдп рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рд▓реЛрдЧреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреБрдирд░реНрдЧрдгрдирд╛ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред



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



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



рдкреНрд░рд╛рдердорд┐рдХ рдЙрджрд╛рд╣рд░рдг: рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛ ред рд╕реНрдерд┐рддрд┐ - рд╕рдВрдЦреНрдпрд╛ рд╕рдВрдЦреНрдпрд╛ред

рдкреНрд░рддреНрдпрдХреНрд╖ рдЖрджреЗрд╢:
 fib[1] = 1 #   fib[2] = 1 #   for i in range(3, n + 1): fib[i] = fib[i - 1] + fib[i - 2] #   i 

рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░:
 fib[1] = 1 #   for i in range(1, n): fib[i + 1] += fib[i] #   i + 1 fib[i + 2] += fib[i] #   i + 2 

рдЖрд▓рд╕реА рдЧрддрд┐рд╢реАрд▓рддрд╛:
 def get_fib(i): if (i <= 2): #   return 1 if (fib[i] != -1): #  return fib[i] fib[i] = get_fib(i - 1) + get_fib(i - 2) #  return fib[i] 

рддреАрдиреЛрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рдЬреАрд╡рди рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛ рдЕрдкрдирд╛ рджрд╛рдпрд░рд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдХреНрд╕рд░ рджреВрд╕рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЕрддрд┐рд╡реНрдпрд╛рдкреАред

рдмрд╣реБрдЖрдпрд╛рдореА рдЧрддрд┐рд╢реАрд▓рддрд╛


"рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдХреНрд░рдо" рдореЗрдВ, рдПрдХ рдЖрдпрд╛рдореА рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рддреБрд░рдВрдд рдмрд╣реБрдЖрдпрд╛рдореА рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реВрдБрдЧрд╛ред рдпрд╣ рдПрдХ рдЖрдпрд╛рдореА рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╢рд╛рдпрдж рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рдорд╛рдк рдХреА рд╕рдВрдЦреНрдпрд╛, рдЕрд░реНрдерд╛рддреН, рд░рд╛рдЬреНрдп рдореЗрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред рдЗрд╕ рдЖрдзрд╛рд░ рдкрд░ рд╡рд░реНрдЧреАрдХрд░рдг рдЖрдорддреМрд░ рдкрд░ "рдПрдХ-рджреЛ-рдХрдИ" рдпреЛрдЬрдирд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореМрд▓рд┐рдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдмрд╣реБрдЖрдпрд╛рдореА рдЧрддрд┐рдХреА рдПрдХ-рдЖрдпрд╛рдореА рд╕реЗ рдмрд╣реБрдд рднрд┐рдиреНрди рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк рдХреБрдЫ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рджреЗрдЦрдХрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

рдЙрджрд╛рд╣рд░рдг рдирдВрдмрд░ 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 #    -  . for i in range(l + 1, r): dp[l][r] = min(dp[l][r], dp[l][i] + dp[i][r]) #       for cnt in range(2, dp_len): if (dp_len % cnt == 0): #   ,      good = True for j in range(1, (dp_len / cnt) + 1): #   ,   cnt   good &= s[l:l + dp_len / cnt] == s[l + (dp_len / cnt) * j:l + (dp_len / cnt) * (j + 1)] if good: #    cnt     dp[l][r] = min(dp[l][r], len(str(cnt)) + 1 + dp[l][l + dp_len / cnt] + 1) 
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:

рд╡рд┐рднрд┐рдиреНрди рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рд╕рд╛рде рджреЛ рд╕рдорд╛рдзрд╛рди
тДЦ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] 

, . ( ) :
  • 1 .
  • 1 . 1 .

, :


.

, тАФ . тАФ , , тАФ : .

4) : , n .

, , . , тАФ k N , ( 1 k ). , ред

5) тАФ dp[N][1..k_max] .

Asymptotics: ред

рдирд┐рд╖реНрдХрд░реНрд╖


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

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

Source: https://habr.com/ru/post/In191498/


All Articles