少し日にちが空いてしまいましたが、9月1日(日)にABC139に参加したので、その振り返りと復習です。
今回もPHP7での参加で通算6回目のコンテスト参加でした。
結果
https://atcoder.jp/users/hideyuk1/history/share/abc139
今回もDまでAC出来て、ペナルティー込みで約35分でした。
今回のDは実装時間がかなり短い問題だったのであまりパフォーマンスは伸びませんでしたが、この調子でいくと後2回か3回で緑コーダーになれそうですね。
提出したコード
今回もA〜Dのみです。
A – Tenki
<?php
fscanf(STDIN, '%s', $s);
fscanf(STDIN, '%s', $t);
$ans = 0;
for ($i = 0; $i < 3; $i++) {
if ($s[$i] === $t[$i]) $ans++;
}
echo $ans . PHP_EOL;
https://atcoder.jp/contests/abc139/submissions/7248703
ここまで約3分。
特に書くことはないです。
B – Power Socket
<?php
fscanf(STDIN, '%d %d', $a, $b);
if ($b === 1) {
echo (0) . PHP_EOL;
exit();
}
if ($a >= $b) {
echo (1) . PHP_EOL;
exit();
}
$ans = 1 + (int)ceil(($b - $a) / ($a - 1));
echo $ans . PHP_EOL;
https://atcoder.jp/contests/abc139/submissions/7259904
ここまで約15分(ペナルティー込で約20分)。
問題文を勘違いしてWAを出してしまい、Cを終えた後にACしました。
タコ足配線には気を付けましょう。
C – Lower
<?php
fscanf(STDIN, '%d', $n);
$h = array_map('intval', explode(' ', trim(fgets(STDIN))));
$ans = 0;
$cnt = 0;
for ($i = 0; $i < $n - 1; $i++) {
if ($h[$i + 1] <= $h[$i]) $cnt++;
else $cnt = 0;
$ans = max($cnt, $ans);
}
echo $ans . PHP_EOL;
https://atcoder.jp/contests/abc139/submissions/7255251
ここまで約10分。
右隣のマスが今居るマスの高さ以下となっているマスが最大で何回連続するかを求めて終わり。
D – ModSum
<?php
fscanf(STDIN, '%d', $n);
$ans = (1 + $n - 1) * ($n - 1) / 2;
echo $ans . PHP_EOL;
https://atcoder.jp/contests/abc139/submissions/7266198
ここまで約25分(ペナルティー込で約35分)。
その数+1で割れば(Nだけは1で割る)余り合計が最大になりそうと気付けるかどうかだけの問題でした。
実装だけ見るとDとは思えないですね。
でも数学的に証明してって言われると僕はちょっと分かりませんね。
最後に
今回も目標とするDまでACすることが出来ました。
ちょっと今回はDの難易度が低めだったのでパフォーマンスはあまり伸びませんでしたが、今後も安定してDまでAC出来るように過去問解いたりアルゴリズム勉強したりしていこうと思います。
早く緑コーダーになりたい!
では!
コメントを残す