AtCoderチャレンジ供養会場(2020/11)
コンテストでの時間切れや解けなかった過去問を振り返って供養していく
11/2: AtCoder Beginer Contest 178 E - Dist Max
Difficulty: 1043 (記事作成時点) マンハッタン距離の式を式変形すると以下のようになる
\begin{array}{ll}
&|x_{i} - x_{j}| + |y_{i} - y_{j}|\\
=&\mathrm{max}(x_{i} - x_{j}, x_{j} - x_{i}) + \mathrm{max}(y_{i} - y_{j}, y_{j} - y_{i})\\
=&\mathrm{max}(x_{i} - x_{j} + y_{i} - y_{j}, x_{i} - x_{j} + y_{j} - y_{i},\\
&x_{j} - x_{i} + y_{i} - y_{j}, x_{j} - x_{i} + y_{j} - y_{i})\\
=&\mathrm{max}( (x_{i} + y_{i}) - (x_{j} + y_{j}), (x_{i} - y_{i}) - (x_{j} - y_{j}),\\
&(x_{j} - y_{j}) - (x_{i} - y_{i}), (x_{j} + y_{j}) - (x_{i} + y_{i}))
\end{array} ここで $z_{i} = x_{i} + y_{i}, w_{i} = x_{i} - y_{i}$ とすると、上式はさらに以下のようになる
\begin{array}{ll}
&\dots\\
=&\mathrm{max}(z_{i} - z_{j}, w_{i} - w_{j}, w_{j} - w_{i}, z_{j} - z_{i})
\end{array} 上式から、任意の についてのマンハッタン距離の最大値は以下のように求められる
\begin{array}{ll}
&\underset{i, j}{\mathrm{max}}(|x_{i} - x_{j}| + |y_{i} - y_{j}|)\\
=&\underset{i, j}{\mathrm{max}}(\mathrm{max}(z_{i} - z_{j}, w_{i} - w_{j}, w_{j} - w_{i}, z_{j} - z_{i}))\\
=&\mathrm{max}(\underset{i}{\mathrm{max}}(z_{i}) - \underset{i}{\mathrm{min}}(z_{i}), \underset{i}{\mathrm{max}}(w_{i}) - \underset{i}{\mathrm{min}}(w_{i}))
\end{array} 実装は 計算量は $O(N)$供養
問題
解法
躓いた点
11/3: AtCoder Beginner Contest 180 E - Traveling Salesman among Aerial Cities
Difficulty: 1226 (記事作成時点) 実装は 計算量は $O(2^{N}N^{2})$供養
問題
解法
躓いた点