0
0

More than 3 years have passed since last update.

AtCoderのRobot armsの問題を絵に描いて理解してみる(PHP)

Last updated at Posted at 2020-12-06

区間スケジューリングというジャンルの問題らしいです。公式の解説だけでは、悲しいかな、僕には理解できなかったので、絵に書いて理解してみました。

問題はこちらです。

入力例

入力例
4
2 4
4 3
9 3
100 5

こうやって絵に描いてみると「なんだそんなことか、確かにそりゃそうだよね」って感じになりました。
IMG_4331.jpg
1番目の一番右端と2番目の一番左端を比べていって、2番目の左端が1番目の右端よりも数字が小さければ、その2番目を取り除いていけばいいだけですね。

コード

コードにするとこんな感じ。

PHP
<?php
    fscanf(STDIN, "%d", $n);
    for ($i = 0; $i < $n; $i++) {
        fscanf(STDIN, "%d %d", $x, $l);
        $ss[] = max(0, $x - $l);
        $ts[] = $x + $l;
    }
    array_multisort($ts, SORT_ASC, $ss);
    $t = 0;
    $count = 0;

    for ($i = 0; $i < $n; $i++) {
        if ($ss[$i] >= $x) {
            $count++;
            $t = $ts[$i];
        }
    }
    echo $count . "\n";

時間に余裕ができたら随時更新していきたいです。
コメントあれば、ぜひよろしくお願い申し上げます!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0