На форумі обговорюються лише питання, пов'язані з олімпіадою
Ви не зайшли.
Мое решение на оффициальной проверке набрало 48 баллов, хотя то же самое решение на дорешивании набирает 60. Можете объяснить почему так происходит?
Поза форумом
Аналогичная проблема с задачей Azs : на официальной проверке 57 баллов, то же самое решение на дорешивании - 60.
Поза форумом
+2 У меня точно такая же ситуация. Решение в результатах на проверке набрало 48. А на дорешивании набирает 60.
Поза форумом
+3 У мене теж 2 задачі які на офіційні перевірці показують 54 та 57, а на дорішувані по 60
Поза форумом
+4 У мене те ж саме з задачею Trainers: на офіційній перевірці 42 бали, а на он-лайн перевірці 45 балів.
Поза форумом
+5 по задачі trainers те ж саме
Поза форумом
Все расхождения связаны с таймингами. Они у нас очень жесткие (сами можете убедиться). Время считаем до 0.01 с. Если ваше решение оптимально, оно по определению уложится в лимит времени (он в 2 раза больше времени авторского решения). Если нет, то в одном случае тест может уложиться в 1с*2=2с, а в другом случае проходить этот же тест за 2.01 с., и это будет Time Out. (не забудьте, оптимальное решение проходит за 1 с). При официальной проверке нагрузка на систему строго единообразна, в отличие от оно-лайн, и эта нестабильность не наблюдается. (результат защитывастся, если он одинаков при 3-х разовом прохождении теста). Если ваше решение не прошло часть тестов (по времени!) в официальной проверке, а проходит в он-лайне эти тесты - это значит, что ваше решение далеко не оптимально... Естественно - можно (как делают во многих случаях!) увеличить время на тест (с 0.02 с до 1-2 с) и все будет "хорощо", но максимум будут набирать много правильных, но не оптимальных решений...
Поза форумом
+6
Ну скажіть будь-ласка, що в нижче наведеному розвязку може бути не оптимально? 54 бали
var i,n,x,max: longint; s: int64;
begin
read(n); s:=0; max:=0;
for i:=1 to n do begin
read(x);
s:=s+x;
if x>max then max:=x
end;
if 2*max > s
then writeln(2*max)
else writeln(s)
end.
Поза форумом
+7
Аналогично
Game2015 не добрала 6 баллов
Trainers не добрала 6 баллов (проблема не стоит в оптимизации алгоритма)
Trainers:
#include "iostream.h"
int main()
{
long long s=0;
long a, amax=0, i, n;
cin >> n;
for (i=0;i<n;i++) {cin >> a; s=s+a; if (amax<a) amax=a;}
if (amax > s-amax) cout << 2*amax ; else cout << s;
return 0;
}
Відредаговано jurij (2015-02-01 17:25:08)
Поза форумом
+8
Те ж саме з задачею trainers проходить абсолютно усі тести, тобто на 60 балів, проте у протоколі зазначено 54 бали.
Алгоритм на с++:
#include <iostream> using namespace std; int main() { int n; // Объявление переменной, которая хранит в себе количество // учеников long long s = 0; // Сумма всех вводимых элементов. int max = 0; // Максимальный элемент из перечня вводимых значений времент // усваивания программ учениками. int temp; // Временная переменная, необходимая для организации ввода // значений времен усваивания учениками задач. //------------------------------------------------------------------------------------------------------ // Пример входных данных: // 1-й вариант: 10 8 2 15 200 25 1 12 7 10 9 Ответ: 400 // 2-й вариант: 3 2 2 2 Ответ: 6 // 3-й вариант: 3 4 1 2 Ответ: 8 // 4-й вариант: 4 1 3 2 1 Ответ: 7 // 5-й вариант: 10 8 2 15 89 25 1 12 7 10 9 Ответ: 178 // 6-й вариант: 10 8 2 15 90 25 1 12 7 10 9 Ответ: 180 // 7-й вариант: 10 8 2 15 88 25 1 12 7 10 9 Ответ: 177 //------------------------------------------------------------------------------------------------------ cin >> n; // Вводим количество учеников for (int i = 0; i < n; i++) // Организуем цикл ввода значений времен усваивания { // учениками задач. cin >> temp; // Чтение очередного значения времени усваивания. s += temp; // Подсчитываем общую сумму всех времен. if (max < temp) max = temp; // Находим максимальное из всех введенных времен. } // if ((s - max) < max) s = 2 * max; // Если найдется такой ученик, которому на обяснение // необходимо будет потратить больше времени, чем всем // ученикам вмести взятым, то пока один учитель будет // объяснять этому ученику, второй учитель сможет всем // остальным ученикам провести консультацию, и, еще // останется время ожидания, пока первый учитель закончит // с "тугодумом". После этого он попадет ко второму учителю, // и тому тоже придется объяснять ему задачу за время, за // которое все остальные ученики изучат задачи у первого // учителя. Тогда, в этом случае, будем считать по // максимальному времени, которое затратят на них учителя. // Это будет двойное время самого медленного ученика 2max. cout << s << endl; return 0; }
Відредаговано Liko (2015-02-01 20:32:28)
Поза форумом
Все споры оттого, что авторские решения и тесты держатся в секрете до самого окончания олимпиады. За редким исключением отдельные авторы задач, публикуют свои алгоритмы и решения на форуме по окончании тура. Например, в трёх турах этого турнира (а это 15 задач) лишь к одной задаче был описан авторский алгоритм. Разумеется, честь и хвала авторам и организаторам этой олимпиады, но тем не менее, создаётся впечатление, что организаторы NetOI озабочены лишь выявлением нескольких лидеров турнира и абсолютно игнорируют образовательно-развивающую функцию турнира отказывая участникам в своевременном предоставлении качественных пояснений решения задач.
Поза форумом
Есть предложение не искать черную кошку в темной комнате. В финал участник "принесет" 1/10 от набранных в предварительных турах, т.е. максимум 60 баллов, если набрал 600. "Спорных" (?) 4-6 баллов - максимум +-1 балл в финале, где будет разыгрываться 500. Реально никто не пострадал. Как правило, отрывы в финале исчисляются десятками, а то и сотнями. Ежели судьба будет решаться на уровне 1-5 баллов отрыва - обязательно вернемся к вопросу. Протоколы троекратного официального тестирования и все решения будут обнародованы после окончания олимпиады, как обычно.
И еще. если все же не пропало желание конкретно разобраться, куда "провалилось" 1-2 теста - письмо на olymp@olymp.vinnica.ua с вразумительной темой "Апелляция" , код участника, код задачи, описание проблемы.Мы в ответ - решение, которое было получено системой + лог прохождения тестов в официальной провереке. Ну, а если вдруг "барабашка" - удовлетврим апелляцию. А то из постов не ясно, кто и в большинстве случаев по какой задаче имеет притензии
Поза форумом
В усіх прикладах програм на С++, які наведені на цій гілці, дуже повільне введення даних (e.g.): cin >> temp;
Якщо програма тестується тричі, то висока ймовірність, що хоча б раз вона дасть на якомусь тесті TimeLimit.
Поза форумом
Alex_Bulany написав:
В усіх прикладах програм на С++, які наведені на цій гілці, дуже повільне введення даних (e.g.): cin >> temp;
Якщо програма тестується тричі, то висока ймовірність, що хоча б раз вона дасть на якомусь тесті TimeLimit.
Да, действительно с scanf работает быстрее. Максимальное время тестирования с cin - 0.82 с ,а с scanf - 0,65 с.
Нужно будет учитывать в дальнейшем.
Поза форумом