想像してWによるHのトロイダル状ラップの正方形のグリッドを。アイテムは次のようにグリッドに配置されます。
最初のアイテムは任意の正方形に配置できますが、後続のアイテムは前のアイテムのマンハッタン距離 R(範囲Rのフォンノイマン近傍とも呼ばれます)内に配置することはできません。慎重に位置を選択すると、有効な位置がなくなる前に多数のアイテムをグリッドに合わせることができます。ただし、代わりに反対の目的を検討してください。配置できるアイテムの最小数はいくらですか?
以下は、半径5の除外ゾーンです。
ここに別の半径5の除外ゾーンがあります。今回はエッジに近いため、ラッピングの動作が明らかです。
入力
3つの整数:
- W:グリッドの幅(正の整数)
- H:グリッドの高さ(正の整数)
- R:除外ゾーンの半径(非負の整数)
出力
整数N。これは、配置できるアイテムの最小数であり、それ以上の有効な配置を妨げます。
詳細
- 半径がゼロの場合、除外ゾーンは1平方(アイテムが配置されたゾーン)になります。
- Nの半径は、N直交ステップで到達できるゾーンを除外します(エッジがトロイド状にラップすることを思い出してください)。
あなたのコードは、R = 0の些細なケースで機能する必要がありますが、W = 0またはH = 0で機能する必要はありません。
コードでは、R > WまたはR > Hの場合も処理する必要があります。
制限時間とテストケース
コードはすべてのテストケースを処理できなければならず、各テストケースは5分以内に完了する必要があります。これは簡単なはずです(JavaScriptソリューションの例では、テストケースごとに数秒かかります)。時間制限は、主に極端なブルートフォースアプローチを除外することです。例のアプローチは、まだかなり強引です。
コードが1台のマシンで5分以内に完了しても、十分に近い別のマシンでは完了しない場合。
フォーム入力のテストケース:出力としてW H R : N
5 4 4 : 1
5 4 3 : 2
5 4 2 : 2
5 4 1 : 5
7 5 5 : 1
7 5 4 : 2
7 5 3 : 2
7 5 2 : 4
8 8 8 : 1
8 8 7 : 2
8 8 6 : 2
8 8 5 : 2
8 8 4 : 2
8 8 3 : 4
7 6 4 : 2
7 6 2 : 4
11 7 4 : 3
11 9 4 : 4
13 13 6 : 3
11 11 5 : 3
15 14 7 : 2
16 16 8 : 2
視覚化を支援し、アイデアをいじるのに役立つスニペット
例(変更されていない)ソリューション
小さな出力の例(半径は幅と高さよりも小さくないため)。テストケースのいずれかを処理できますが、タイムアウトし、ほとんどの大規模なケースをあきらめます。