Лучше не хеш считать, а эвристически выбирать наиболее вероятное значение. К примеру, длинный тест — вероятнее 2, короткий — 0, хотя ещё лучше написать более «умную» эвристику.
ACM всё же сильно отличается от подхода к школьникам. Тут как раз нужно не усложнять задачу, а не допустить возможность набирания тривиальными решениями большого количества баллов.
Фактически, в нашем случае, «мультитест» и достигается изменением условия задачи — добавляется во входных данных количество тестов, затем подряд следуют исходные данные каждого теста.
Полностью отказаться от этого нельзя, ведь бывают действительно хорошие задачи, решением которых, тем не менее, является конечное небольшое множество заранее известных ответов.
Для тех людей, которые «в теме» «хитрость» автора не является хитростью как таковой, это — один из известных приёмов, которым каждый когда-то пользовался. Тем более, те организаторы, которые заинтересованы не допускать подобные решения с помощью группировки тестов не допускают их.
Так что, получается, результатом поста автора явилась только полемика об олимпиадах, что, в принципе, неплохо для тех, кому есть что сказать.
В своё время на Всеукраинке так одну задачу решил. Написал за пять минут перебор, который потом ещё час генерил ответы на тесты. А многие на этой задаче засыпались по таймлимиту.
Человек правильно написал. На олимпиадах задачи проверяются автоматически, по тестам, в код никто не смотрит. На сборах же цель — не только отобрать лучших, которые пойдут отстаивать честь области/страны, но и улучшить их знания, поэтому задачи подробно разбираются и код тоже анализируется.
Интересно, почему зря? Использование подобных эвристик — довольно известный приём, причём, на сборах на Всеукраинку нас учили, что если не успеваешь написать полностью программу, пиши эвристику, авось наберёт сколько-то баллов.
Я отвечу вам. Дело в том, что олимпиады по программированию на самом деле далеки по сути от реального практического программирования. Рассматривайте олимпиаду как одну практическую задачу в которой ваша цель — набрать как можно больше баллов с помощью любых доступных средств в рамках правил. Олимпиады как раз и призваны развивать нестандартных подход и абстрактное мышление у людей.
Я член жюри города Донецка (один из областных центров Украины). Так вот, уже несколько лет в подобных задачах используется группировка нескольких ответов в один. Тест считается пройденным, если вся группа ответов идентична эталонной. На простых группах тестов эвристики теоретически могут пройти, но человек, так решивший задачу не наберёт больше 10-20% баллов.
А ещё человек после практики способен «сродниться» с любым механизмом (взять, например, автомобиль). Так что десять ручек оторвёте, а в одиннадцатый раз нормально дверь откроете.
Всё понравилось, кроме «демонстрации», когда мужичок-япошка не смог удержать 40килограмм риса на руках =) Смешно, согласитесь) Как он девушку свою носит?
Буду очень вам благодарен, если вы попробуете на тех же исходниках PTGui. Или дадите мне ссылку на исходники и я сам попробую и расскажу о результате ;)
Фактически, в нашем случае, «мультитест» и достигается изменением условия задачи — добавляется во входных данных количество тестов, затем подряд следуют исходные данные каждого теста.
Полностью отказаться от этого нельзя, ведь бывают действительно хорошие задачи, решением которых, тем не менее, является конечное небольшое множество заранее известных ответов.
Так что, получается, результатом поста автора явилась только полемика об олимпиадах, что, в принципе, неплохо для тех, кому есть что сказать.
мне тоже сразу понравилась