Уявіть сіткою W від H квадратів, які обгортаються тороїдно. Елементи розміщуються на сітці наступним чином.
Перший елемент може бути розміщений на будь-якому квадраті, але наступні елементи не повинні знаходитися в межах Манхеттенської відстані R від будь-якого попереднього елемента (також відомого як околиці Фон-Неймана діапазону R ). Ретельний вибір позицій дозволяє помістити велику кількість предметів на сітку до того, як немає більше дійсних позицій. Однак замість цього врахуйте протилежну мету: яка найменша кількість предметів, які можна розмістити, і не залишати більше дійсних позицій?
Ось радіус 5 зони відчуження:
Ось ще одна зона відчуження радіусом 5, на цей раз біля країв, тому поведінка загортання очевидна:
Вхідні дані
Три цілих числа:
- W : ширина сітки (натуральне число)
- H : висота сітки (натуральне число)
- R : радіус зони відчуження (невід'ємне ціле число)
Вихідні дані
Ціле число N - це найменша кількість елементів, які можна розмістити, запобігаючи подальшим дійсним розміщенням.
Деталі
- Радіус нуля дає зону виключення в 1 квадрат (ту, на яку був розміщений предмет).
- Радіус N виключає зону, до якої можна дійти N ортогональних кроків (пам'ятайте, що краї обертаються тороїдально).
Ваш код повинен працювати для тривіального випадку R = 0, але не потрібно працювати для W = 0 або H = 0.
Ваш код повинен також мати справу з випадком , коли R > W або R > H .
Ліміт часу та тестові випадки
Ваш код повинен мати можливість вирішувати всі тестові справи, і кожен тестовий випадок повинен завершитися протягом 5 хвилин. Це повинно бути простим (приклад рішення JavaScript займає кілька секунд для кожного тестового випадку). Час обмеження полягає в основному, щоб виключити екстремальний підхід. Приклад підходу все ще є досить грубою силою.
Якщо ваш код заповниться протягом 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
Фрагмент, щоб допомогти візуалізувати та пограти з ідеями
Приклад (необолочений) розчин
Просто приклад для невеликих виходів (в результаті радіус не набагато менший за ширину та висоту). Може працювати з будь-яким із тестових випадків, але час вичерпається та відмовиться від більшості великих випадків.