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

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

Мой профиль
Здесь обсудим тактику на командных олимпиадах
Геннадий Марцинкевич

Темы: 4
Сообщений: 139

Мой профиль
Тактика:
1. Делим задачи на 3 части, каждый читает свою
2. Сложные задачи сразу отсеиваем в отдельную стопку, поддерживаем множество самых лёгких задач, опираясь на таблицу и стараемся решать их
3. Когда кто-то что-то придумает, советуется с самым свободным, определяем лимиты по времени написания
4. Если кто-то пишет или дебагает слишком долго (больше отведённого времени на 8 минут), то либо кто-то помогает ему, либо идёт писать придуманную собой задачу



Советы:
1. Перед написанием 10 минут думаем над реализацией, если эта задача пишется дольше 1 минуты (очень лёгкая)
2. Если долго не можем ничего придумать, обмениваемся задачами и идеями, обсуждаем
3. Первые 2 часа пишут только Саша и Артём
Мастера кода онлайн

Темы: 0
Сообщений: 16

Мой профиль
Причины плохого результата ( 07.09.2025 )
1) не хватило времени
1.1 долго не могли найти закономерность на G
1.2 час не могли понять почему не работает I (проблема оказалась в отсутствии чекера)
2) разделились в последний час и думали по 2 задачам. В итоге ничего не придумали, но если бы думали все над 1 задачей, возможно сдали бы.
Вывод: В последний час(из-за небольшого количества времени) лучше сконцентрироваться всем на 1 задаче.
Мастера кода онлайн

Темы: 0
Сообщений: 16

Мой профиль
Тактика:
1. Делим задачи на 3 части, каждый читает свою
2. Сложные задачи сразу отсеиваем в отдельную стопку, поддерживаем множество самых лёгких задач, опираясь на таблицу и стараемся решать их
3. Когда кто-то что-то придумает, советуется с самым свободным, определяем лимиты по времени написания
4. Если кто-то пишет или дебагает слишком долго (больше отведённого времени на 8 минут), то либо кто-то помогает ему, либо идёт писать придуманную собой задачу



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

Темы: 2145
Сообщений: 51644

Мой профиль
- надо ли поправлять тактику ?
- кому что и как тренировать ?


Возможные варианты ???
- сдать разобранные задачи (вместе писать?)
- разобрать авторские описания решений
- подумать над задачами какое-то время
Мастера кода онлайн

Темы: 0
Сообщений: 16

Мой профиль
Проблемы:
1. Долго писали H, I, J. Виноваты все, нужно ускорятся и быстрее дебагать.
2. Усложнили решение J, поняв это только во время отправки. Почему? Не думали над реализацией 10 минут.
3. На H придумали слишком лёгкое решение, которое тяжело пишется. Если бы подумали над реализацией ещё, не факт что что-то изменилось бы, тем более, если бы Гена думал один.
4. Придумали неправильную формулку для циклов в C, не смогли её опровергнуть, т. к. были заняты др. задачами.
5. Мало думали над реализацией I, из-за этого пропустили случай, получили WA. Возможно, если бы Саша сразу написал красиво код , то сразу бы нашёл ошибку без помощи Артёма.
6. Геннадий забыл модули на H. Не знаем, как это иногда не забывать.

Что исправить:
1. Быстрее кодировать, особенно Гене и Саше
2. Если думаем над решением вдвоём, думать над реализацией не в одиночку
3. Больше сомневаться в своих "очевидных" решениях и пытаться их опровергнуть, особенно Артёму и Саше (стараться думать в сторону ДП), а также стараться развивать упрощающие задачу идеи
4. Дольше думать об упрощении решения, прежде чем его писать.
Мастера кода онлайн

Темы: 0
Сообщений: 16

Мой профиль
Тактика:
1. Делим задачи на 3 части, каждый читает свою
2. Сложные задачи сразу отсеиваем в отдельную стопку, поддерживаем множество самых лёгких задач, опираясь на таблицу и стараемся решать их
3. Когда кто-то что-то придумает, советуется с самым свободным, определяем лимиты по времени написания
4. Если кто-то пишет или дебагает слишком долго (больше отведённого времени на 8 минут), то либо кто-то помогает ему, либо идёт писать придуманную собой задачу
5. Над сложными задачами, которые придумывались вдвоём/втроём, после 2-3 часов контеста, писать вместе.



Советы:
1. Перед написанием 10 минут думаем над реализацией, если эта задача пишется дольше 1 минуты (очень лёгкая)
2. Если долго не можем ничего придумать, обмениваемся задачами и идеями, обсуждаем
3. Первые 2 часа пишут только Саша и Артём
4. В последний час всем думать над 1 задачей
5. Несколько минут стараться упрощать решения перед кодированием, а также думать над реализацией всем, кто придумывал, а не только, кто кодирует
Мастера кода онлайн

Темы: 0
Сообщений: 16

Мой профиль
Проблемы:
0. Забыли разобрать случай на B в начале олимпиады, итог - +1 посылка
1. В задаче F Артём забыл проверять делители >sqrt(n), итог - +2
2. В задаче E Гена забыл рассказать один случай в условии, итог - +1
3. В задаче D Артём неправильно обработал один случай, из-за большого кол-ва оных - +4
4. В задаче I поставили неправильные ограничения, Гена не мог долго понять решение Саши, итог - +1
5. В задаче H Гена перепутал переменную в формуле, итог - +1
6. Много потратили времени на C, зная, что там кривой тест
7. В задаче L Гена долго писал CHT, был баг с неправильным upper_bound и коллизией при переводе из double в int, итог - -2
8. В задаче G неправильно поняли условие, чего и добивались авторы, написав его слишком непонятным и запутанным
9. В задаче K Саша подумал, что асимптотика будет слишком большой - переключились на другие задачи

Что исправить:
Саше: считать асимптотику и пытаться понятнее рассказывать решения
Гене: лучше рассказывать условия
Артёму: быть внимательнее при реализации
Всем: Думать над непонятными условиями вместе
Мастера кода онлайн

Темы: 0
Сообщений: 16

Мой профиль
Тактика:
0. Делим задачи на 3 части, каждый читает свою
1. Сложные задачи сразу отсеиваем в отдельную стопку, поддерживаем множество самых лёгких задач, опираясь на таблицу и стараемся решать их
2. Когда кто-то что-то придумает, советуется с самым свободным, определяем лимиты по времени написания
3. Если кто-то пишет или дебагает слишком долго (больше отведённого времени на 8 минут), то либо кто-то помогает ему, либо идёт писать придуманную собой задачу
4. Над сложными задачами, которые придумывались вдвоём/втроём, после 2-3 часов контеста, писать вместе.
5. Если не понимаем, или сомневаемся в условии, думаем над ним вместе


Советы:
0. Перед написанием 10 минут думаем над реализацией, если эта задача пишется дольше 1 минуты (не слишком лёгкая)
1. Если долго не можем ничего придумать, обмениваемся задачами и идеями, обсуждаем
2. Первые 2 часа пишут только Саша и Артём
3. В последний час всем думать над 1 задачей
4. Несколько минут стараться упрощать решения перед кодированием, а также думать над реализацией всем, кто придумывал, а не только, кто кодирует
5. Кидать время нестандартных олимпиад в группу
Михаил Долинский

Темы: 2145
Сообщений: 51644

Мой профиль
From: Michael Dolinsky
Достойно, а ещё лучше могли? 

(8-ое место в олимпиаде Питер #1)

From: Геннадий Марцинкевич

Могли - 1 задачу не дописали, 2 не придумали, но, вероятно, если было бы ещё время, сдали бы и их. Проблема, пожалуй, одна - медленно пишем, а многие некрасиво, так, что код невозможно дебажить
 


Значит теперь это - направление главного удара.

1. Выпиши СВОИ ПРАВИЛА - что значит писать код красиво.
2. Обсудите их в команде, дополните/замените что нужно, чтобы получить
ПРАВИЛА НАПИСАНИЯ КОДА В КОМАНДЕ.

После каждой олимпиады выписывайте замечания нарушителям правил написания кода.
Геннадий Марцинкевич

Темы: 4
Сообщений: 139

Мой профиль
Хорошо, вот код, который я считаю красивым:
0. Tabы. Они должны стоять и стоять правильно, а не так, что if будет правее, чем его внутренности.
1. Пробелы. Во всех операторах (+ - * / % & && и т. д.) должны стоять пробелы. И как можно меньше лишних скобок
2. Не должно быть return в конце void - это сбивает
3. Ленивое проталкивание в ДО писать через push, а не через передавайте на следующий уровень проталкиваемого через аргументы функции
4. Использовать camelCase для переменных, заглавные буквы для констант. Желательно на английском - не kol, а cnt и подобное.
5. Не засорять код - не использовать вектора без необходимости, не писать громадные конструкции из if - else, если можно заменить на if - return, if - return.

P. S.
0. ЗАКРЫВАТЬ КОЛПАЧКИ НА РУЧКАХ И НЕ РАСКИДЫВАТЬ ИХ ПО ВСЕМУ КОРИДОРУ
1. Не сидеть на проводах, при том, под 45° к столу - ровно стул ставить
Михаил Долинский

Темы: 2145
Сообщений: 51644

Мой профиль
Отлично.
В ближайшую встречу (среду?) обсудите,дополните/измените и КОНТРОЛИРУЙТЕ исполнение правил.
Нарушителям - штраф
- принести по шоколадке сокомандникам на ближайшую олимпиаду
Геннадий Марцинкевич

Темы: 4
Сообщений: 139

Мой профиль
[deleted]
Мастера кода онлайн

Темы: 0
Сообщений: 16

Мой профиль
Стиль кода v2:
0. Tabы. Они должны стоять и стоять правильно, а не так, что if будет правее, чем его внутренности.
1. Пробелы. Во всех операторах (+ - * / % & && и т. д.) должны стоять пробелы. И как можно меньше лишних скобок
2. Не должно быть return в конце void - это сбивает
3. Использовать глобальные константы для ограничения массивов, например, const int N = 1e5 + 9; Всегда ставить + 9 или подобное в конце.
4. Стараться использовать oo = 1e18 или INF. Пусть INF и дефайн, но лучше писать его большими буквами как константу. Почему oo не большими буквами? 2 причины: OO похоже на 00 и так быстрее писать - это как фразеологизм. Также не стоит забывать про коллизии, которые иногда возникают при переводе 1e18/1e19 в long.
5. Использовать разделители числа: 1'000'000 - это работает хотя бы в C++23, далеко не факт, что в остальных тоже, но попробовать на пробнике стоит.
6. Не занулять сразу глобальные переменные.
7. Использовать int a[n]{}, fill и iota.
8. Использовать camelCase для переменных, заглавные буквы для констант. Желательно на английском - не kol, а cnt и подобное.
9. Не засорять код - не использовать вектора без необходимости, не писать громадные конструкции из if - else, если можно заменить на if - return, if - return.
10. Использовать long или ll вместо long long и int64_t - так быстрее, читабельнее и можно не оборачивать в скобки конструктор: int(2.5) или long(2.5).
11. Пихать #define int long отдельно от всех дефайнов, желательно, пониже, возле const int N и using namespace std, чтобы легко было смотреть закомментирован ли он или нет и быстро к нему перемещаться.
12. Не писать iostream::sync_with_stdio(0); и ios_base::sync_with_stdio(0); - это одно и тоже! Писать просто ios::sync_with_stdio(0);
13. В for ставить пробелы между ;: for (int i = 0; i < n; ++i) и for (auto u : v)
14. Стараться ставить простые типы сразу в for, чтобы быстрее отлавливать ошибки компиляции: for (int u : v) или for (char u : s)

Желания:
0. Хотелось бы видеть ++i, так мне не нужен постинкремент
1. Не писать int32_t main, а просто main(){}, т. к. это необязательно и потому что main как отдельная функция вообще не нужна - хочется от неё избавиться полностью, но это, увы, нельзя, довольствуемся убиранием хотя-бы одного слова от её объявления

Стиль алгоритмов:
0. В цикле по подтестам
while (t--) {
    solve();
    cout << nl;
}

писать перевод строки, чтобы не ставить его в каждом выводе, например, cout << ans << nl; - код выглядел читабельнее, без воды и не забыть его поставить, если что
1. Ленивое проталкивание в ДО писать через push, а не через передавайте на следующий уровень проталкиваемого через аргументы функции


P. S.
0. ЗАКРЫВАТЬ КОЛПАЧКИ НА РУЧКАХ И НЕ РАСКИДЫВАТЬ ИХ ПО ВСЕМУ КОРИДОРУ
1. Не сидеть на проводах, при том, под 45° к столу - ровно стул ставить
Мастера кода онлайн

Темы: 0
Сообщений: 16

Мой профиль
Листы для ВКОШП.
Стоит сделать отдельный репозиторий на GitHub или ещё где-нибудь и вместе редактировать их.
0. Алгоритмы:
Макс. клика
Проверка числа на простоту, факторизация
orderedSet
КТО для не взаимнопростых m
LCP
Манакер
Сумма Минсковского
Сортировка векторов по углу без дробных чисел:
bool comp(pair <int, int> a, pair <int, int> b) {
    if (a.f < 0 && b.f < 0)
        return comp({-a.f, -a.s},
                    {-b.f, -b.s});
    if (a.f < 0) //b.f >= 0
        return 0;
    if (b.f < 0) //a.f >= 0
        return 1;
    if (a.f == 0)
        return a.s > 0;
    if (b.f == 0)
        return b.s < 0;
    return a.s * b.f > b.s * a.f;
}

Кол-во дробных чисел до 10^x
Отжиг (в том числе многослойный)
1. Код для проверки на пробнике (пока что просто идеи):
__int128/__int128_t
1'000'000
 
Индекс форума ->Олимпиадное программирование ->Тактика на командных олимпиадах 1, 2, 3
Time:0,043