[Logo] Форум DL
  [DL]  На главную страницу 
Индекс форума ->Олимпиадное программирование ->Тактика на командных олимпиадах 1, 2, 3, 4
Автор Сообщение
Гомель-2

Темы: 1
Сообщений: 28

Мой профиль
b1,b2,b3,s2 - sasha
Гомель-2

Темы: 1
Сообщений: 28

Мой профиль
b1 b3 b4 Лёха
s1 s2 Антон
b2 s3 совместный дебаг
b2 +1 ляп с размерностью
b3 +3 мелкие ошибки в коде; размерность
s1 +1 ошибка с пометками в очереди
s2 +1 неправильная идея
s3 +3 рекурсия слишком долго работает, надо было дп
Михаил Долинский

Темы: 1984
Сообщений: 47232

Мой профиль
Здорово, но надо лучше

Лёша уже второй в дорешивании
http://dl.gsu.by/restable.jsp?hd=2&hid=167391882&obid=167391882&pi=6&pi=7&pi=4&pi=10&u.c=1095&lng=rus&u.a&c.l=2&c.n=2&c.s=2

Это очень круто, но надо также думать и о качестве
Например, увидел сегодня такое Лёшино решение
http://dl.gsu.by/getusersolution.jsp?id=7054305

Убеждён, что это можно и нужно написать красивее – короче, понятней
От некачественного решения получаются две страницы текста, 5 отсылок (и это когда тесты отдаются)

12.07.18 15:31 TTTT 333 Все тесты успешно пройдены main.g54 DelTA3 at NIT7
12.07.18 15:12 TTTT 231 не пройден 8-й тест (неверный ответ) main.g54 DelTA3 at NIT0 Win10
12.07.18 14:55 TTTT 66 не пройден 3-й тест (неверный ответ) main.g54 DelTA3 at NIT7
12.07.18 14:47 TTTT 99 не пройден 4-й тест (неверный ответ) main.g54 DelTA3 at NIT0
12.07.18 14:43 TTTT 33 не пройден 2-й тест (неверный ответ) main.g54 DelTA3 at NIT7

Лёша – попробуй и сам по-другому написать.
Антон – пожалуйста, напиши свой вариант решения этой задачи.
Вот решение Гомель-3 – это ты писал?
http://dl.gsu.by/getusersolution.jsp?id=6916818

Более того, предлагаю ОБОБЩИТЬ идеи

Для начала почитать-подумать-обсудить это
http://dl.gsu.by/NForum/posts/topicshow/3028.dl?postid=76377#76377

Ну и «забегая вперёд»
Учитывая как хорошо отрешал Лёша в прошлое воскресенье
и как здорово работает между воскресеньями
предлагаю такую тактику не ближайшее воскресенье

1. В идеале на Лёшу вешаем Bronze и Silver, Антону достаётся Gold.
2. Действуем так.
Антон последовательно читает Bronze, Silver, Gold и придумывает к ним решения.
Лёша (от самой простой Bronze к самой сложной Silver) придумывает решение задачи – рассказывает идею Антону, и если получает одобрение, идёт писать.
Если у него проблемы – распечатывает и старается их решить сам.
Если не может решить проблему или долго решает (полчаса, например, не может сдать) – может попросить помощи у Антона.
Если Антон устал думать и хочет писать (Gold!!! ) – он получает комп в своё распоряжение.
Если через 3(?) часа результаты команды недостаточно хороши, Антон может переключиться на более простые задачи (Silver).

Цель - как можно больше «прокачаться»
Лёше - в быстром и правильном (с первой попытки) решении задач Bronze и Silver
Антону – в придумывании и реализации сложных задач (Gold)

Лёша, можно "фору получить", если придти пораньше.
Я примерно с 8.00 в школе.
Михаил Долинский

Темы: 1984
Сообщений: 47232

Мой профиль
Моя альтернатива решению Лёши
{
11 12 13 
21 22 23
31 32 33
11 21 31 
12 22 32
13 23 33
11 22 33
13 22 31
}
const 
  iLine : array [1..8,1..3] of longint=((1,1,1),(2,2,2),(3,3,3),(1,2,3),(1,2,3),(1,2,3),(1,2,3),(1,2,3));
  iRow  : array [1..8,1..3] of longint=((1,2,3),(1,2,3),(1,2,3),(1,1,1),(2,2,2),(3,3,3),(1,2,3),(3,2,1));
var
  s             : array [1..3] of string;
  i,Ans1,Ans2,d : longint;
  w,w1,w2       : string;

  procedure Count(i:longint;var d:longint; var w: string);
    var
      k,j,Line,Row : longint;
      c            : char;
    begin
      k:=0; w:=''; 
      for j:=1 to 3 do 
        begin
          Line:=iLine[i,j];
          Row :=iRow [i,j]; 
          c:=s[Line,Row]; 
          if pos(c,w)=0 then w:=w+c;
        end;
      d:=length(w);
      if (d=2) and (w[1]>w[2])
        then begin c:=w[1]; w[1]:=w[2]; w[2]:=c; end; 
    end;  

begin
  assign(input,'tttt.in'); reset(input);
  assign(output,'tttt.out'); rewrite(output);
  for i:=1 to 3 do readln(s[i]);
  Ans1:=0; Ans2:=0; w1:=''; w2:='';
  for i:=1 to 8 do 
    begin
      Count(i,d,w);
      if (d=1) and (pos(w,w1)=0) then begin inc(Ans1); w1:=w1+w;     end;
      if (d=2) and (pos(w,w2)=0) then begin inc(Ans2); w2:=w2+w+'-'; end;
     end;
  writeln(Ans1);
  writeln(Ans2);
  close(input); close(output);
end.

Михаил Долинский

Темы: 1984
Сообщений: 47232

Мой профиль
Авторское решение
Алексей Ситников

Темы: 17
Сообщений: 112

Мой профиль
Я сдал задачу TTTT.
http://dl.gsu.by/getusersolution.jsp?id=7055831
По объёму получилось намного меньше, но я думаю, что можно ещё меньше. Правда не знаю как, но я так думаю)
______________________
Жизнь - игра. Сюжет - так себе, но графика потрясающая.
Гомель-2

Темы: 1
Сообщений: 28

Мой профиль
b1 b2 b3 Лёша
s1 s2 s3 g3 Антон
Андрей полезный, он придумывал идеи

b3 +1 забыл обнуление
s3 +1 не тот файл
g1 -2 не успели отладить

s1 s2 s3 дорешивание Лёша
g1 g2 дорешивание Антон
Гомель-2

Темы: 1
Сообщений: 28

Мой профиль
b1 b2 Лёша
b2 s2 s3 Антон
Андрей полезный, он придумывал идеи

b2 -6 лишние сеты; неуловимая ошибка в коде; отлаживали 3 часа
s2 +2 long long; ответ по модулю
Гомель-2

Темы: 1
Сообщений: 28

Мой профиль
изменения в тактике:
1. коллективное обсуждение задач и идей
2. научить Лёху писать компактнее
3. не юзать лишние структуры в лёгких задачах
4. не отлаживать долго одно решение (полчаса и больше), лучше его на фиг переписать
5. натаскать Андрея на ДП
Михаил Долинский

Темы: 1984
Сообщений: 47232

Мой профиль
О командной тактике
Михаил Долинский

Темы: 1984
Сообщений: 47232

Мой профиль


Михаил Долинский:

Что делает Гена Короткевич, когда задача не решается

https://rb.ru/longread/champion/

— Объясни — почему на командных соревнованиях на столе только один компьютер на команду из трех человек? 
— Таковы правила, к тому же очень много работы нужно выполнять не за компьютером. Например, думать над задачами, отлаживать решения.

Если код не работает, команда не может позволить себе искать ошибку за компьютером — на это просто нет времени.

Кто-то из программистов сидит над листом бумаги и ищет ошибку глазами. Соревнования длятся пять часов, то есть на трех человек это 15 человеко-часов. Но за компьютером команда может провести только пять часов — не больше и не меньше. Поэтому компьютерное время становится особенно ценным.  


Я солидарен с Геной.
Надо стараться РАСПЕЧАТЫВАТЬ текст и ЧТЕНИЕМ искать в нём ошибку.
Желательно - в одиночку тому, кто писал код (Лёше или Антону)- если не получается - то с помощью Андрея.

Переписывать решения не надо.
Лёша решает свои задачи, Антон - свои.
Михаил Долинский

Темы: 1984
Сообщений: 47232

Мой профиль


Гомель-2:

2. научить Лёху писать компактнее
 
Я попросил Антона почитать Лёшины решения и подготовить свои замечания и предложения.
Рекомендую это делать прямо в этой теме форума примерно в таком виде:

Ссылка на задачу
Ссылка на Лёшино решение

Указание на фрагмент кода
Собственный вариант этого фрагмента

Пояснения, что именно нужно писать по-другому, как и почему.

Почему в форуме лучше?

1) Учёба останется и новым поколениям школьников.
2) Можно будет видеть "повторяются ли замечания", то есть, принимает ли к сведению предложения Лёша.

P.S. Если Антон напишет свои замечания пораньше, возможно Лёша уже в ближайшее воскресенье что-то попробует улучшить.
Антон Харрасов

Темы: 6
Сообщений: 35

Мой профиль
Когда вся программа помещается на одном экране, её
удобнее отлаживать и легче понять

Общие советы и замечания по стилю кода:

- Операторные скобки

for() {
    ...
}

вместо

for()
{
    ...
}

Так читабельнее, быстрее и меньше объём

- TAB четыре пробела (не два), так легче различать блоки

- Не растягивать короткие строчки

for(i=0;i<n;i++) for(j=0;j<n;j++) {
    if(mk[i][j]) {ans++; continue;}
    h-=t[i];
}

вместо

for(i=0;i<n;i++) 
  for(j=0;j<n;j++) {
      if(mk[i][j]) {
          ans++; 
          continue;
      }
      ans-=t[i];
  }

- В C++ переменным типа bool можно присваивать
целочисленные значения, false - 0, true - все
остальные числа. Использование 0 и 1 вместо этих слов сокращает
время написания кода. Мелкая фигня, но удобная

- Писать циклы с итераторами, где это возможно:

vector<int> graph[N];
...
for(int v=0;v<n;v++) for(int u:graph[v]) {
    ...
}

Гомель-2

Темы: 1
Сообщений: 28

Мой профиль
b1 s1 Антон
b2 b3 b4 Лёха

b1 +4 не поняли условие
b3 +3 не смог куски
s2 -11 не нашли ошибку в коде
s3 -2 не успели
Гомель-2

Темы: 1
Сообщений: 28

Мой профиль
изменения в тактике:
если Лёха не сдал всю бронзу за час, Андрей или Антон переписывают решения
 
Индекс форума ->Олимпиадное программирование ->Тактика на командных олимпиадах 1, 2, 3, 4
Time:0,053