Input file: | input.txt | Time limit: | 1 sec | |
Output file: | output.txt | Memory limit: | 256 Mb | |
Maximum points: | 100 |
Wilhelm plays Gorn game in virtual reality, fighting against N gladiators on the arena. He has a bow and an infinite number of arrows and never misses an enemy with a shot.
When Wilhelm hits an enemy gladiator for the first time, he inflicts D points of damage, so gladiator loses D hit points. Every following hit on the same gladiator increases damage by K points due to weakening of the gladiator's armor. When hitting a new gladiator, damage again starts with D and increases after each hit. Gladiator dies when his hit points become zero or negative.
What is the minimum number of arrows Wilhelm must spend to kill all gladiators?
1 ≤ N ≤ 104
1 ≤ D ≤ 105
1 ≤ K ≤ 103
No. | Input file (input.txt ) |
Output file (output.txt ) |
---|---|---|
1 |
|
|
Входной файл: | input.txt | Ограничение времени: | 1 сек | |
Выходной файл: | output.txt | Ограничение памяти: | 256 Мб | |
Максимальный балл: | 100 |
Вы участвуете в разработке игры в виртуальной реальности жанра Tower Defense. В играх подобного жанра, целью является защита основного замка от наступления вражеских юнитов.
Одно из защитных орудий в игре — мортира. Это пушка которая может регулировать угол наклона в пределах от 45 до 90 градусов от земли. Сама себе пушка урон нанести не может.
Как разработчику, вам поручили задание разработать искусственный интеллект для этого орудия. На начальных уровнях искусственный интеллект должен быть достаточно прост, вплоть до того, что он ничего не должен знать о параметрах орудия. Орудие имеет ограниченное количество боеприпасов — 20 зарядов. До того как боезапас иссякнет, пушка должна поразить хотя бы одну цель. Все, что может узнать ваш ИИ — это расстояние, на котором находится цель, и расстояние, на которое улетел снаряд после выстрела. Искусственный интеллект может управлять лишь углом наклона орудия.
Ваши коллеги уже создали для вас простую тестовую сцену, и даже написали за вас API.
Вам лишь необходимо реализовать интерфейс.
Ссылка на репозиторий с проектом:
https://github.com/Lukaviy/AI-for-defense.git
.
Также, ваши коллеги еще не до конца уверены в выборе игрового движка.
Возможно в скором будущем они перейдут на другой.
Поэтому они убедительно просят вас воздержаться от использования функций,
зависимых от Unity.
(Вместо Mathf
использовать System.Math
, и т.д.)
Необходимо реализовать класс CannonAI
со следующим интерфейсом:
public class CannonAI : ICannonAI
{
// Расстояние на котором находится цель
void SetTarget(double distance);
// Угол наклона в градусах в который нужно установить пушку перед выстрелом
double GetShootAngle();
// Информация о дальности полета снаряда
void FeedbackHitDistance(double distance);
}
Файл с решением должен содержать только реализацию класса CannonAI
.
В качестве среды программирования необходимо выбирать C#
.
Гарантируется, что пушка всегда может достать до противника.
45 ≤ Angle ≤ 90
10 ≤ Distance ≤ 106
Автор: | Mikhail Babich | Ограничение времени: | 30 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt | |||
Максимальный балл: | 100 |
Юный программист Вася решил поиграть в RollerBall. Цель игры — собрать как можно больше монет, которые находятся в лабиринте. Для того, чтобы взять монетку, её границы нужно пересечь мячом, которым Вася может управлять. У мяча есть энергия, которая расходуется на каждом шаге.
Вася хочет собрать очень много монет и для этого решил написать программу,
которая бы управляла мячом и сама собирала все монеты в лабиринте.
К сожалению, Вася очень плохо знает C#
и просит Вас ему помочь.
Проект
https://github.com/BabichMikhail/NTI_TaskC_Maze
,
который написал Вася, уже содержит игру и умеет вводить и выводить файлы нужных форматов.
Вам осталось реализовать класс AutoBallControl
для управления мячом.
Первый тест совпадает с примером, содержащимся в файле input.txt
в репозитории проекта.
Входной файл содержит 5 целых чисел S, R, C, N, E — номер (seed) лабиринта, количество строк и столбцов лабиринта, количество монет, количество энергии у мяча.
Файл с решением должен содержать реализацию класса AutoBallControl
.
0 ≤ S ≤ 107
1 ≤ R ≤ 600
1 ≤ C ≤ 600
2 ≤ R * C ≤ 600
0 ≤ N ≤ 9
0 ≤ E ≤ 3 * 104
Author: | Mikhail Babich | Time limit: | 30 sec | |
Input file: | input.txt | Memory limit: | 256 Mb | |
Output file: | output.txt | |||
Maximum points: | 100 |
Young programmer Vasya like game RollerBall. He want take part in competition where participants compete in passage of maze for speed. Game goal - take coin for minimum step count. In order to take a coin, ball must cross coin boundaries. Ball has energy which spent on every step.
Вася очень хочет победить и для этого решил написать программу,
которая бы управляла мячом и сама собрала бы монету в лабиринте.
Вася уже лучше знает C#
, и он хотел использовать программу из предыдущего режима,
но в новом режиме программа управляет не скоростью, а вращением мяча, поэтому Вася снова просит Вас ему помочь.
Проект,
который написал Вася, уже содержит игру и умеет вводить и выводить файлы нужных форматов.
Вам осталось реализовать класс AutoBallControl
для управления мячом.
Задача будет проверятся на одном тесте, содержащимся в репозитории проекта. Вам необходимо собрать монету за минимальное количество шагов.
Файл с решением должен содержать реализацию класса AutoBallControl
.