Yechim tahlili

Minimal enirgiya

Muallif: __thecrash__

Masalaning shartga ko'ra, olmaxon 1-ustundan boshlab \(n\)-ustungacha yetib borishi uchun dinamik dasturlash (Dynamic Programming) usulidan foydalanamiz.

Har bir \(i\)-ustungacha yetib borish uchun sarflanadigan minimal enirgiyani \(dp[i]\) deb belgilaymiz. Olmaxon \(i\)-ustunga faqat ikkita yo'l bilan kelishi mumkin:

  1. \((i-1)\)-ustundan bir qadam sakrab (\(\vert{}a_{i} - a_{i-1}\vert{}\) enirgiya sarflab).
  2. \((i-2)\)-ustundan sakrab (\(3 \cdot \vert{}a_{i} - a_{i-2}\vert{}\) enirgiya sarflab, agar \(i \ge 3\) bo'lsa).

Shunga ko'ra o'tish formulasi (rekurrent tenglama) quyidagicha bo'ladi:

\(dp[i]\) = min(\(dp[i-1] + \vert{}a_{i} - a_{i-1}\vert{}\)\(\ dp[i-2] + 3 \cdot \vert{}a_{i} - a_{i-2}\vert{}\))

Boshlang'ich qiymatlar:

  • \(dp[1] = 0\) (olmaxon allaqachon 1-ustunda turibdi)
  • \(dp[2] = \vert{}a_2 - a_1\vert{}\)

Natijada \(dp[n]\) biz izlagan minimal enirgiyani beradi. Vaqt va xotira murakkabligi \(O(n)\).

Navbatdagi musobaqa