2016-06-28
SRM 678
https://competitiveprogramming.info/topcoder/srm/round/16648/div/1
Div1 Easy (250) ANewHope
問題
- はるかな銀河の彼方で...一週間はN日からなる
- ルークはN種類のシャツを1枚ずつ持っている
- 各週において、毎日違うシャツを着る
- シャツは洗濯する必要があり、同じシャツはD日後以降にしか着られない
- 最初の週のシャツを着る順番と、最後の週のシャツを着る順番が与えられる
- 条件を満たすための週の総数の最小値を求める
方針
- 最初と最後が同じなら答えは1
- 各シャツの最初の週の位置a[i]、最終週の位置b[i]を求める
- 各シャツの位置の差d[i]=b[i] + N - a[i]で、最短でd[i]日後に着ることになる
- d[i]の最小値mがD未満のときは、毎日r=N-Dずつ差を広げていく必要がある
- D以上にするのに必要な日数はx=ceil(D - m) / r日
- 最初と最終週が必要なのでx+2が答え
- Passed System Test
- https://github.com/firewood/topcoder/blob/master/srm_6xx/srm_678/ANewHope.cpp
結果
o-- 168th/296 125.86pt rating 1380 -> 1407 (+27)
スターウオーズ回。
単純に差を縮めていけばいいようだが、合っているかあまり自信なし。
- 65 https://topcoder-g-hatena-ne-jp.jag-icpc.org/
- 54 https://topcoder-g-hatena-ne-jp.jag-icpc.org/
- 20 https://www.google.co.jp/
- 9 topcoder-g-hatena-ne-jp.jag-icpc.org
- 5 https://www.google.co.jp
- 4 https://www.google.com/
- 3 http://www.so.com/link?url=https://topcoder-g-hatena-ne-jp.jag-icpc.org/firewood/?word=%2A%5BDP%5D&q=topcoder+hard+dp&ts=1468929593&t=86c9d5fb4f4f4b583322c628675ecc8&src=haosou
- 2 https://www.google.co.in/
- 2 https://www.google.com.vn/
- 2 https://www.google.co.jp/search?q=TopCoder+SRM+522+Div2&ie=utf-8&oe=utf-8&hl=ja