рдУрд▓рдВрдкрд┐рдпрд╛рдб рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ

рдирдорд╕реНрддреЗ!

рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдореИрдВрдиреЗ рдЯрд┐рдорд╕ рдСрдирд▓рд╛рдЗрди рдЬрдЬ рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛рд░реНрдпреЛрдВ рдирд╛рдордХ рдПрдХ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЖрдпрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХрд╛рд░реНрдп рдореЗрд░реЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реБрдЪрд┐ рдХрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдХреНрд╕рд░ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рдорд╛рдзрд╛рди рдХреА рдЧрддрд┐ рдФрд░ рд▓рд╛рд▓рд┐рддреНрдп рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЧрддрд┐рд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреНрдпрд╛ рд╣реИ?

рдбрд╛рдпрдиреЗрдорд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЙрдк-рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рдПрдХ рд╡рд┐рднрд╛рдЬрди рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдореВрд▓ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдореЗрдВ "рд╕рд░рд▓" рд╣реЛрддрд╛ рд╣реИред "рдЧрддрд┐рд╢реАрд▓" рд╢рдмреНрдж "рдЖрдЧрдордирд╛рддреНрдордХ" рдХреЗ рдХрд░реАрдм рд╣реИ: рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЙрддреНрддрд░ рдХреБрдЫ рдЕрд░реНрде рдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ k , рдФрд░ рдореИрдВ рдЗрд╕рдХрд╛ рдЬрд╡рд╛рдм рдвреВрдВрдврдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ k+1 ред рдЧрдгрд┐рдд рдореЗрдВ, рдпрд╣ рдПрдХ рдкреНрд░реЗрд░рдХ рд╕рдВрдХреНрд░рдордг рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рд╣реИред

рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг


рд╕рдмрд╕реЗ рд╣рдбрд╝рддрд╛рд▓реА рдФрд░ рд╕рд╛рдВрдХреЗрддрд┐рдХ рдХрд╛рд░реНрдп рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХрд╛ рдХрд╛рд░реНрдп рд╣реИ рдПрдирдПрди рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рдЕрдиреБрдХреНрд░рдо рдХреА рд╕рдВрдЦреНрдпрд╛ред рдпрд╣ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреБрдг рд╣реИрдВ:

F0=F1=1, Fn=FnтИТ1+FnтИТ2$


рдпрд╣ рддреБрд░рдВрдд рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реВрддреНрд░ рдХрд╛ рдЕрд░реНрде рд╣реИ:

int Fibonacci(int n) { if(n == 1 || n == 2) return 1; return Fibonacci(n-1) + Fibonacci(n-2); } 

рдпрджрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ "рдЕрдВрдд рд╕реЗ" рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реИ, рддреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдзрд┐ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдмреАрдЪ рд╕реНрдерд┐рдд рд╕рднреА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддреА рд╣реИ 0 рдФрд░ рдПрдирдПрди :

 int dpFibonacci(int n) { int prev1 = 1; int prev2 = 1; int curr = 0; for(int j = 2; j < n; j++) { curr = prev1 + prev2; prev1 = prev2; prev2 = curr; } return curr; } 

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдмрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рдПрдирдПрди рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдпрд╣ рдХрдИ рдмрд╛рд░ рдордзреНрдпрд╡рд░реНрддреА рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдереЛрдбрд╝рд╛ рдФрд░ рдЬрдЯрд┐рд▓ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рдЙрджрд╛рд╣рд░рдг 1. рдЖрдк рдПрдХ рдЯреЛрд▓ рд╕реАрдврд╝реА рдкрд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВред рдкрд░ рдХрджрдо рд░рдЦрдирд╛ рд╣реИ рдореИрдВрдореИрдВ рдЖрдкрдХреЛ рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ai рд╕рд┐рдХреНрдХреЗред рдЖрдк рдЕрдЧрд▓реЗ рдЪрд░рдг рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдПрдХ рдкрд░ рдХреВрдж рд╕рдХрддреЗ рд╣реИрдВред рдХрд╛рд░реНрдп: рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдирдПрди рдХрджрдо рдФрд░ рд╕рдВрднрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдХреБрдЫ рд╕рд┐рдХреНрдХреЗ рдЦрд░реНрдЪ рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдкрд░ рдХрджрдо рд░рдЦрддреЗ рд╣реБрдП, рд╣рдо "рднреБрдЧрддрд╛рди" рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╣рдВрдЧреЗ рдЪрд░рдг рдореЗрдВ рднрд╛рдЧ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╣рдо рдмрдЪрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рдореВрд▓реНрдпреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдПрдБ рдбрдб рдЬрд┐рд╕рдореЗрдВ рдЬрдЬ -рдпрд╣ рд╕реНрдерд╛рди рдЙрди рд╕рд┐рдХреНрдХреЛрдВ рдХреА рдиреНрдпреВрдирддрдо (рдиреНрдпреВрдирддрдо) рд╕рдВрдЦреНрдпрд╛ рд╣реЛрдЧреА рдЬрд┐рдиреНрд╣реЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦрд░реНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдЬ рд╡реЗрдВ рдЪрд░рдгред рдпрд╣ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ d1=a1, d2=a2 ред рдФрд░ рдлрд┐рд░ рд╣рдо рдкрд┐рдЫрд▓реЗ рджреЛ рдЪрд░рдгреЛрдВ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдХрджрдо рдЙрдард╛рдПрдВрдЧреЗ рдФрд░ рдХрджрдо рдХреА рд▓рд╛рдЧрдд рдХреЛ рд╕реНрд╡рдпрдВ рдЬреЛрдбрд╝реЗрдВрдЧреЗ:

di= min left(diтИТ1,diтИТ2 right)+ai$



рд╣рдо рд╕рдорд╕реНрдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓рддреЗ рд╣реИрдВ: рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдХреБрдЫ рдЪрд░рдгреЛрдВ рдореЗрдВ рдЖрдк рд╕рд┐рдХреНрдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ ak<0 )ред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рдХреНрдпрд╛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╕рд╣реА рдкрд░рд┐рдгрд╛рдо рджреЗ?

рдирд┐рд░реНрдгрдп
рдпрд╣ рдХреЗрд╡рд▓ рд╣рдорд╛рд░реА рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХреА "рд╢реБрд░реБрдЖрдд" рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрджрд┐ рдкрд╣рд▓реА рд╕реАрдврд╝реА рд╣рдореЗрдВ рд╕рд┐рдХреНрдХреЗ рдирд╣реАрдВ рд▓рд╛рддреА рд╣реИ, рддреЛ рдЗрд╕ рдкрд░ рдХреВрджрдирд╛ рдЙрдЪрд┐рдд рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ a1<0 , рдЕрдкрдиреЗ рд╕рд┐рдХреНрдХреЛрдВ рдХреЛ рд░рдЦрдирд╛ рдФрд░ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, d2= min left(0,d1 right)+a2 ред

рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ "рджреНрд╡рд┐-рдЖрдпрд╛рдореА" рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг 2. рднреВрд▓рднреБрд▓реИрдпрд╛ рдореЗрдВ рд╣реИ рдПрди рдореАрдПрдирдореА рдХрдорд░реЗ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рд╕реЛрдирд╛ рд╣реЛрддрд╛ рд╣реИ (рдПрдХ рдкрд┐рдВрдЬрд░реЗ рдореЗрдВ (i,j) рд╣реИ aij рд╕реЛрдирд╛)ред рдХрд╛рд░реНрдп рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдПрдХ рдмрд┐рдВрджреБ рд╕реЗ рдЕрдзрд┐рдХрддрдо рдорд╛рд░реНрдЧ рдХреЗ рд╕рд╛рде рд╕реЛрдиреЗ рдХреА рдЕрдзрд┐рдХрддрдо рдорд╛рддреНрд░рд╛ рдХреНрдпрд╛ рдПрдХрддреНрд░ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ (0,0) рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ (n,m) рдЕрдЧрд░ рдЖрдк рдиреАрдЪреЗ рдпрд╛ рджрд╛рдИрдВ рдУрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕рд▓рд┐рдП, рд╣рдо рд╕реЗрд▓ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдорд╛рд░реНрдЧ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (i,j) ред рд╣рдо рдпрд╣рд╛рдВ рджреЛ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - (iтИТ1,j) рдФрд░ (i,jтИТ1) ред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЗрди рджреЛ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╖реНрдЯрддрдо рдорд╛рд░реНрдЧ рдЬреНрдЮрд╛рдд рд╣реИрдВ (рд╡реЗ рдХрд┐рд╕реА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ рдбрдб ), рдлрд┐рд░ рд╕реЗрд▓ рдХреЗ рд▓рд┐рдП рдЬрд╡рд╛рдм (i,j) рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛:

dij= max left(diтИТ1j,dijтИТ1 right)+aijред$

ред


рдпрд╣ рдПрдХ рдФрд░ рдХреНрд▓рд╛рд╕рд┐рдХ рдЧрддрд┐рд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛рд░реНрдп рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рдВрд╢реЛрдзрди рдЦреЗрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдХрд╛рдлреА рдЖрдо рд╣реИрдВред рдЗрд╕реА рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рдпрд╣рд╛рдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ ред

рдЕрдзрд┐рдХ рдЪреБрдиреМрддреАрдкреВрд░реНрдг рдХрд╛рд░реНрдп

рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдЬрд╣рд╛рдВ рдЪрд╛рд╣реЗрдВ рд╡рд╣рд╛рдВ рдЦрд░рд╛рдм рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЯрд┐рдорд╕ рдСрдирд▓рд╛рдЗрди рдЬрдЬ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдПрдХ рдХрд╛рд░реНрдп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЧрдгрд┐рддреАрдп рд╕реВрддреНрд░реАрдХрд░рдг рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдЕрдВрдХ рдХреЛ рдкреВрд░реНрдг рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдиреНрдпреВрдирддрдо рд╕рдВрдЦреНрдпрд╛ рдЬреНрдЮрд╛рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдкрд╣рд▓реЗ рдХреА рддрд░рд╣, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рд╕рднреА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдЙрддреНрддрд░ рдЬрд╛рдирддреЗ рд╣реИрдВ kтИТ1 рдХреБрдЫ рд╕рд░рдгреА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ рдбрдб рдФрд░ рд╣рдо рдЦреЛрдЬрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ dk ред

рдпрд╣ рдирдВрдмрд░ рд▓реЛ k рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ:

  1. k рдПрдХ рдкреВрд░реНрдг рд╡рд░реНрдЧ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ dk=1 ред
  2. рд╢рд╛рдпрдж рдкрд┐рдЫрд▓реА рд╕рдВрдЦреНрдпрд╛ kтИТ1 рдПрдХ рдкреВрд░реНрдг рд╡рд░реНрдЧ рдерд╛ред рддреЛ dk=dkтИТ1+1 ред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдкрд┐рдЫрд▓реЗ рдПрдХ рдЗрдХрд╛рдИ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЗрддрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред

рд╣рдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ: рд╣рдо рдПрдХ рдЕрдкрдШрдЯрди рдЪрд╛рд╣рддреЗ рд╣реИрдВ k=q2+s рдРрд╕рд╛ рд╣реИ

dq2+ds<dkтИТ1+1.

рдХреНрдпреЛрдВрдХрд┐ q2 - рдкреВрд░реНрдг рд╡рд░реНрдЧ рддреЛ dq2=1 , рдФрд░

ds<dkтИТ1,

рдпрд╣ рд╣реИ, рд╣рдо рдПрдХ рд╡рд┐рднрд╛рдЬрди рд╣реИ рдХрд┐ рдмрд╕ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ рдкрд╛рдпрд╛ dkтИТ1+1 , рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрд╡рд╛рдм рд╣реЛрдЧрд╛

dk=ds+dq2=ds+1.



рдирдореВрдирд╛ рдЬрд╛рд╡рд╛ рдХреЛрдб рдЬреЛ рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ:
 for(int k = 1; k <= n; k++) { int best = d[k - 1] + 1; //      int q = 1; while(k - q*q >= 0) { // k = q*q + s if(k - q*q == 0) { // k -   best = 1; break; } else if(d[k - q*q] < best) best = d[k - q*q] + 1; q++; } d[k] = best; } 


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╕реНрдпрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд▓рдХреНрд╖реНрдп рд╕реЗ рдПрдХ рд╕реАрдврд╝реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реИ рдПрдирдПрди рдирд┐рдпрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреНрдпреВрдмреНрд╕:

  1. рд╕реАрдврд╝реА рдХреЗ рдХрдо рд╕реЗ рдХрдо рджреЛ рдЪрд░рдг рд╣реИрдВ;
  2. рдПрдХ рд╕реАрдврд╝реА рдореЗрдВ рджреЛ рд╕рдорд╛рди рдЪрд░рдг рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ;
  3. рд╕реАрдврд╝рд┐рдпреЛрдВ рдХреЗ рдХрджрдо рдЖрд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ (рдпрд╛рдиреА, рдЕрдЧрд▓рд╛ рд╡рд╛рд▓рд╛ рдкрд┐рдЫрд▓реЗ рд╡рд╛рд▓реЗ рд╕реЗ рдмрдбрд╝рд╛ рд╣реИ)ред

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

\ _ \ _ рд╕реАрдорд╛_ {j = 1} ^ n d_ {nj}


рддреЛ, рд╣рдо рд╕реАрдврд╝рд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЦреЛрдЬрдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░реЗрдВрдЧреЗ рдореИрдВ рдХреНрдпреВрдмреНрд╕ рдЬреЛ рд▓рдВрдмреЗ рд╣реЛрддреЗ рд╣реИрдВ рдЬ ред рддрд╕реНрд╡реАрд░ рд╕реАрдврд╝рд┐рдпреЛрдВ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЧрд┐рд░ рдЬрд╛рддреЗ рд╣реИрдВ d74 :

рдЪреВрдВрдХрд┐ рд╣рдо рд╕рднреА рд╕реАрдврд╝рд┐рдпреЛрдВ рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдХрдо рдХреНрдпреВрдмреНрд╕ рд╣реЛрддреЗ рд╣реИрдВ, рд╣рдо рд╕реАрдврд╝рд┐рдпреЛрдВ рдХреЛ "рд╡рд┐рднрд╛рдЬрд┐рдд" рдХрд░ рджреЗрдВрдЧреЗ (i,j) рджрд╛рд╣рд┐рдирд╛ рд╕реНрддрдВрднред рдкрд░рд┐рдгрд╛рдо рдПрдХ рд╕реАрдврд╝реА рд╕реА рд╣реИ рдЖрдИтИТрдЬреЗ рдХреНрдпреВрдмреНрд╕ред рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг i=9, j=4 :

рд▓реЗрдХрд┐рди рдРрд╕реА рд╕реАрдврд╝рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рдгрд╛рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреНрдЮрд╛рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдРрд╕реА рд╕рднреА рд╕реАрдврд╝рд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдЪрдХреНрд░ рдХреЗ рд╕рд╛рде рд╕реЙрд░реНрдЯ рдХрд░реЗрдВрдЧреЗ k рдФрд░ рд╕рднреА рдкрд░рд┐рдгрд╛рдо рдЬреЛрдбрд╝реЗрдВред рдЗрд╕ рддрд░рд╣ рд╕реЗ

dij= sum limitjтИТ1k=1diтИТjjред


рдЕрдм рд╣рдо рд╕реАрдврд╝рд┐рдпреЛрдВ рдХреА рдКрдБрдЪрд╛рдИ рдХреЛ рдЫрд╛рдБрдЯреЗрдВрдЧреЗ:

dij= sum limitjтИТ1k=1diтИТjk, j= overline1,iред$

рдЕрдВрдд рдореЗрдВ, рдмрджрд▓ рд░рд╣рд╛ рд╣реИ рдореИрдВ рд╕реЗ 1 рдХреЛ рдПрди рд╣рдореЗрдВ рдЬрд╡рд╛рдм рдорд┐рд▓ рдЧрдпрд╛ред

рдорд╣рддреНрд╡рдкреВрд░реНрдг : рд╣рдорд╛рд░реЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ dii=1 , рдЕрдиреНрдпрдерд╛ рдЕрдиреНрдпрдерд╛ рд╕реАрдврд╝рд┐рдпреЛрдВ рдХреЗ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ "рдЦреЛ" (рдЬрдм "рд╡рд┐рднрд╛рдЬрд┐рдд") рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд┐рдирд╛ рдХрд╣реЗ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реАрдврд╝реА рд╕рдорд╕реНрдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрддреНрддрд░ рд╕рдВрдЦреНрдпрд╛ рд╣реЛрдЧреА dnnтИТ1 ред

рдирдореВрдирд╛ рдЬрд╛рд╡рд╛ рдХреЛрдб рдЬреЛ рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ:

 dp = new long[n + 1][n+1]; d[1][1] = 1; d[2][1] = 0; d[2][2] = 1; for(int i = 3; i < n + 1; i++) { for(int j = 2; j <i; j++) { long cnt = 0; for(int k = 1; k < j; k++) { cnt += d[i - j][k]; } d[i][j] = cnt; } d[i][i] = 1; //    } long answer = 0L; for(int i = 0; i <= n; i++) { answer += d[n][i]; } answer--; //     


рдЕрдЧрд▓рд╛ рдХрд╛рд░реНрдп рдПрдХ-рдЖрдпрд╛рдореА рд╕рд░рдгреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реИред рдкрд╣рд▓рд╛ рдкреНрд░рд╡реЗрд╢ 2 рд╢рдмреНрджреЛрдВ рдХреЛ рдЬрд╛рдирддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕рднреА рд╢рдмреНрдж рд╕рд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдЦреБрдж рдХреЛ рджреЛ рдГ рдЬрд╛рдирддрд╛ рд╣реИ: рдпреБрд╡рд╛ рдФрд░ рдмреВрдврд╝рд╛ред рдмрджрд▓реЗ рдореЗрдВ, рдпреБрд╡рд╛рдУрдВ рдХреЛ рдХрдИ рд╢рдмреНрджреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝рд╛рдпрд╛ рдЬрд╛рддрд╛ рдерд╛ рдЬреИрд╕рд╛ рдХрд┐ рд╡рд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддрд╛ рд╣реИ, рдФрд░ рдкреБрд░рд╛рдиреЗ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд╢рдмреНрдж рд╕рд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдХрд┐рддрдиреЗ рдПрдирдЯреАрдПрд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ K рд╢рдмреНрдж (рдЗрди ents modulo рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдкреА )ред

рд╕рдорд╛рдзрд╛рди рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдПрдБ рдб рдЬрд┐рд╕рдореЗрдВ рдореИрдВ -рдЗрд╕ рд╕реНрдерд╛рди рдкрд░ рд╣рдо ents (рдореЙрдбреБрд▓реЛ) рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬрдорд╛ рдХрд░реЗрдВрдЧреЗ рдкреА ) рдЬреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ рдореИрдВ рд╢рдмреНрджред рдпрд╣ рд╕рдм рдкрд╣рд▓реЗ рдкреНрд░рд╡реЗрд╢ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рджреЛ рд╢рдмреНрджреЛрдВ рдХреЛ рдЬрд╛рдирддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП d2=1 ред рдФрд░ рдлрд┐рд░ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ:

  • рд╕рднреА ents рдЬреЛ рд╡рд┐рд╖рдо рд╕рдВрдЦреНрдпрд╛ рд╡рд╛рд▓реЗ рд╢рдмреНрджреЛрдВ рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдкреБрд░рд╛рдиреЗ рд╣реИрдВ рдФрд░ рдкрд┐рдЫрд▓реЗ рд╡рд╛рд▓реЗ рд╕реЗ рд╣реА рд╕реАрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рд╡рд┐рд╖рдо рдХреЗ рд▓рд┐рдП i: di=diтИТ1;
  • рдХреЗ рд░реВрдк рдореЗрдВ ents рдХреЗ рд▓рд┐рдП рдЬреЛ рд╢рдмреНрджреЛрдВ рдХреА рдПрдХ рд╕рдорд╛рди рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдпреЗ рд╕рднреА рд╡реЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдХрд▓реНрдкрд┐рдд (рдпреБрд╡рд╛) рд╕реЗ рд╕рдорд╛рди рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╢рдмреНрдж рдкреНрд░рд╛рдкреНрдд рд╣реБрдП рд╣реИрдВ + рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдкрд┐рдЫрд▓реЗ (рдкреБрд░рд╛рдиреЗ) рд╕реЗ рд╕реАрдЦрд╛ рд╣реИ; рд╡рд╣ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреЗ рд▓рд┐рдП рдореИрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИ di=di backslash2+diтИТ1 ред

рдпрд╣ рдЧрдгрдирд╛ рдореЛрдбреБрд▓реЛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рд╡рд┐рд╢рд╛рд▓ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рддреБрд░рдВрдд рд╕рднреА рдореВрд▓реНрдпреЛрдВ рдХреЛ рдпрд╛рдж рд░рдЦреЗрдВрдЧреЗред

рдирдореВрдирд╛ рдЬрд╛рд╡рд╛ рдХреЛрдб рдЬреЛ рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ:
 int[] d = new int[K + 1]; if(K >= 2) d[2] = 1; if(P != 1) { for(int i = 3; i <= K; i++) { if(i % 2 != 0) { d[i] = d[i - 1]; } else { d[i] = ((d[i/2] % P) + d[i - 1] % P) % P; } } } else d[K] = 0; 


рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рдВрд╕рд╛рдзрди:

  1. рдЯрд╛рдЗрдорд╕ рдСрдирд▓рд╛рдЗрди рдиреНрдпрд╛рдпрд╛рдзреАрд╢;
  2. рдЧрддрд┐рд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ ;
  3. рддреБрд▓рдирд╛ рдЧреБрдг рдореЛрдбреБрд▓реЛред

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


All Articles