Codeforces Round#11
久しぶりのCodeforces.リベンジのチャンスだった訳だが……
おい間違って自分の日記にスターつけちまったよwどう取り消すすんだこれw
Result
+1 00:07/-6/-/-/-
296位 1469->1414
A. Increasing Sequence
問題
項数nの数列があたえられたとき、各項に自然数dを何度か足して数列が(狭義)増加列になるようにしたい。
dを足す最小回数を求めよ。
試行錯誤
む、今回は問題文が明快だ……
1分ほど思考。初項から単調増加になるようにどんどんdを足してけばいいな。
n<2000のd<10^6なら単純に足して時間大丈夫じゃね。
書く。送信→TLE
え?……数列の項が全部0でn=2000のケースでTLEになったのか?
たった400万でTLEになんの?信じらんねー
(良く考えたら最悪ケース400万じゃなかった。その数千倍。)
割り算でO(n)の解法に訂正→AC.(7分)
B. Jumping Jack
Aで早速WAとか勿体ない。。。
問題
数直線上の原点から、座標xの点に次のようにジャンプして移動したい。
- n回目のジャンプはちょうど幅n
- 向きは左右のどちらに飛んでも良い
x(|x|<10^9)が与えられたとき、最小のジャンプ回数を求めよ。
試行錯誤
10^9ってことは探索ではないな。えーとこれGreedyでいけるんじゃね。
xを超えるまでジャンプすると1+2+3+...+k=nで、+iの項のプラスをマイナスにすると和はn-2iになる。
ってことは偶奇が一致するxより大きい数まで飛べばかならず項の符号入れ替えでxになるように和を作ることができる。楽勝。
書く。送信→WA(on case 4)
あれ。どこ間違ったんだろう。xを超えるkを求める部分かなー。
式を見直す。いや合ってる。なんかオーバーフローでもしてるの???
送信→WA(on case 4)→細かいとこ変えて送信→WA(on case 4)→細かいとこ変えて送信→WA(on case 4)
えー。。。なんでだ全然原因わからない。
問題取り違えてる?10回くらい読み直す。取り違えてねーよなー。
和のとこ全部足してく方式にしよう。最悪でもTLEになるはず。
送信→WA(on case 4)
意味わからん。全く原因の検討がつかない。
探索で答え書いて比較するかなあ。
探索書いた。あれ全然答え違うwあ、探索は同じマスに2回入れること反映してないw
折り返しがある場合同じマスに二度入る場合もある。
結局原因わからないのでコンテスト投げた。終了。才能ないね。人生も終了しろよクズが。