1. 程式人生 > >【Atcoder yahoo-procon2019-qual D】 Ears

【Atcoder yahoo-procon2019-qual D】 Ears

ear 出發 roc coder 如果 開始 耳朵 最小 lin

Atcoder yahoo-procon2019-qual D

題意:給你\(L\)個耳朵(???),以及一條範圍從\(0\)\(L\)的數軸,你可以選擇一個出發點,從該點開始隨意走動,如果經過了\(i-0.5\)這個點,則會給第\(i\)個耳朵的數值?\(+1\),每個耳朵都有一個最終的要求值,你可以通過增加或減少一個耳朵的數值來達到要求值,問最少更改的次數。

思路:

走的路線是這樣的(或者左右顛倒):

首先往左一段距離;

再向右一段距離(超過原點);

再向左一段距離(不超過原點)。

然後就可以預處理出三段分別的最小值:

  • 最左點到原點(可給耳朵賦的值是非\(0\)偶數)
  • 原點到結束點(可給耳朵賦的值是奇數)
  • 結束點到最右點(可給耳朵賦的值是非\(0\)偶數)

然後就可以稍微遞推一下了。

反思:比賽時的思路第一開始都沒考慮到最後還可能折返一段距離,於是就掛了第一次,第二次是\(i+1?\)寫成\(i?\)了(可以這麽說,但是我以為的錯誤是還要加上一段不超過最右點的向右折返,然後加上了個沒用的東西)。所以第一開始最好還是考慮更完善一些。

【Atcoder yahoo-procon2019-qual D】 Ears