ABC175 参加記

AtCoder Beginner Contest 175に参加してABE 3完で1449位だった。つまらん くやしい

f:id:knzk398:20200816001831p:plain

 

それぞれC++Python(PyPy)でのACしたコードを載せます Pythonはコンテスト後に思考を整理したりshortestを参考にして書いたので読みやすいと思います

A. Rainy Season

三文字のなかに連続する'R'はいくつあるかという問題 if文を書いた

C++

https://atcoder.jp/contests/abc175/submissions/15966999

Python3

https://atcoder.jp/contests/abc175/submissions/15976656

B. Making Triangle

問題文を適当に読んでるので三角形が作れる組は何通りあるかだけ数えてサンプル合わねーーーーー!!!って叫んでた。L_i,L_j,L_kがすべて異ならないといけないらしい

sortしてi,j,kを全探索する。三角形にできるのは二辺の長さがもう一辺の長さより長い時で、sortするとa_i+a_j > a_kと書けて、うれしい(a_kが一番長いので)

a_i+a_j > a_k ←これtex:a_i+a_j + a_kって書いたら壊れるんだけどなんで?

C++

https://atcoder.jp/contests/abc175/submissions/15967094

Python3

https://atcoder.jp/contests/abc175/submissions/15976837

C. Walking Takahashi

コンテスト中にACすることっができなかった(は?)

座標の絶対値を小さくするためにはXから0にむけて進んでくのがよくて、k*DがXよりも小さい時はX-k*Dが答え。

floor(X/D)回、座標の絶対値を小さくするほうに動くと符号が反転しない範囲で動くなかでは座標の絶対値が最小になるもう一回動くと座標が反転し、座標が反転した状態で動ける中では座標の絶対値が最小になる。

k-floor(X/D)が偶数ならX-floor(X/D)*Dが答えで奇数ならabs(X-floor(X/D)*D-D)が答えになる。

floor(X/D)をするときにXをabs(X)にしないとだめなんだけど、忘れていた

C++

https://atcoder.jp/contests/abc175/submissions/15967314

Python3

https://atcoder.jp/contests/abc175/submissions/15976941

D. Moving Piece

これ最近のABCになかった?笑 あれの上位互換っぽい

ループに入る前までの部分、ループ部分、余り部分にわけてそれぞれ計算してmaxをとる。とWAになった。n周+αできるときにn-1周+βのほうがつよいときがある

(これPが順列なのでループに入る前までの部分とかはないですね(入次数が2になることがあると思って解いてたけどそんなことはないらしい))

C++

https://atcoder.jp/contests/abc175/submissions/15967363

PyPy3(Python3で提出すると、TLE....)

https://atcoder.jp/contests/abc175/submissions/15977998

E. Picking Goods

dp[k][i][j] := pos(i,j)でk個選択したときのmaxというdpをすると、AC

 

dpは全部0で初期化して遷移は

dp[k][i][j]に対してa[i][j](アイテム)を使わないときはdp[k][i][j-1]から、使うときはdp[k-1][i][j-1]から遷移してくるのでdp[k][i][j] = max(dp[k][i][j],dp[k][i][j-1],dp[k-1][i][j-1]+a[i][j])

縦に遷移するときは行で3個までの制限がリセットされるのでdp[0][i][j] = max(dp[k][i-1][j])

C++

https://atcoder.jp/contests/abc175/submissions/15967422

PyPy3(Python3 TLE)

https://atcoder.jp/contests/abc175/submissions/15987538