Олимпиадное программирование в УлГТУ

Олимпиадное программирование в УлГТУ

Массив

Массив

Пікірлер

  • @indominusmonster6433
    @indominusmonster64335 сағат бұрын

    пытаться переписать этот код на python - трэш

  • @op_ulstu
    @op_ulstu3 сағат бұрын

    Да ладно вам. ideone.com/SlQ8Cy

  • @indominusmonster6433
    @indominusmonster64333 сағат бұрын

    @@op_ulstu о, спасибо

  • @jetairliner5706
    @jetairliner57063 күн бұрын

    От души всё растолковано, спасибо

  • @nekoie6150
    @nekoie61508 күн бұрын

    спасибо вам огромное!!

  • @RedFeuer.
    @RedFeuer.9 күн бұрын

    Спасибо!

  • @user-iw7zo9vm8o
    @user-iw7zo9vm8o9 күн бұрын

    круто!

  • @adventureswithstan1026
    @adventureswithstan102613 күн бұрын

    Спасибо, очено помогли,единственный нормально объяснение на ютубе

  • @tusman4ik
    @tusman4ik14 күн бұрын

    А стоит ли на олимпиаде этим заниматься? Я про тестинг автоматический.. Ведь время жмет.

  • @op_ulstu
    @op_ulstu14 күн бұрын

    На последних часах пятичасовых соревнований нередко есть выбор между поиском ошибки в решении одной задачи или написанием с нуля решения другой задачи. Стресс-тестирование в такой ситуации может очень сильно помочь. Кроме того, есть форматы соревнований, когда решения отправляются «втёмную» (то есть итоговый вердикт становится известен только после окончания). В этом случае стресс-тестирование просто незаменимо.

  • @adventureswithstan1026
    @adventureswithstan102615 күн бұрын

    Идеальный канал,спасибо

  • @antonnesterov8711
    @antonnesterov871117 күн бұрын

    3:10 - почему сдвинули R на 40, а не на 43?

  • @op_ulstu
    @op_ulstu17 күн бұрын

    Спасибо за наблюдательность, здесь на слайдах ошибка. Правильная последовательность шагов при поиске элемента 33: L = 0, R = 19, M = 9; A[M] > 33, смещаем R на M - 1 L = 0, R = 8, M = 4; A[M] < 33, смещаем L на M + 1 L = 5, R = 8, M = 6; A[M] > 33, смещаем R на M - 1 L = 5, R = 5, M = 5; A[M] < 33, смещаем L на M + 1 L = 6, R = 5; индексы зашли друг за друга, следовательно, элемента 33 в массиве нет.

  • @antonnesterov8711
    @antonnesterov871117 күн бұрын

    @@op_ulstu понял, большое спасибо за уточнение! И за курс в целом - он отличный!

  • @quirenceh4ndeir156
    @quirenceh4ndeir15623 күн бұрын

    Легенда. Спасибо. Добавьте еще дополнительные задачи про мосты и точки сочленения, все люди, грокающие графы, будут благодарны

  • @ducbyk8169
    @ducbyk816928 күн бұрын

    Большое вам спасибо за наглядные примеры и код.

  • @user-vf7xz3kd9h
    @user-vf7xz3kd9hАй бұрын

    Найс

  • @user-vf7xz3kd9h
    @user-vf7xz3kd9hАй бұрын

    Нааааайс

  • @user-vf7xz3kd9h
    @user-vf7xz3kd9hАй бұрын

    Топ

  • @lobiritus1512
    @lobiritus1512Ай бұрын

    Спасибо за такое понятное и подробное объяснение!

  • @aveok1
    @aveok1Ай бұрын

    Спасибо вам болшое

  • @user-vf7xz3kd9h
    @user-vf7xz3kd9hАй бұрын

    Огонь 🔥

  • @Bibliophilos
    @BibliophilosАй бұрын

    Коммент в поддержку канала, большое дело делает автор.

  • @Bibliophilos
    @BibliophilosАй бұрын

    Спасибо огромное за видео! Пожалуйста, объясните для чайника, когда мы пишем l = m+1, r = m - 1; а когда просто приравниваем m? Первый случай только для поиска конкретного элемента?

  • @op_ulstu
    @op_ulstuАй бұрын

    Мы начали с такого примера и такого решения потому, что для начинающих зрителей они являются более понятными и естественными. Далее мы придём к более общему решению. Задача, которая решается при помощи бинпоиска, чаще состоит не в том, чтобы найти какое-то заданное значение, а в том, чтобы найти первый или последний элемент, обладающий определённым свойством. Для таких задач уже проще запомнить общее решение, когда цикл while идёт до 2 элементов, а l и r всегда смещаются на m (без +1/-1). Подробнее об этом рассказано в следующем видео: kzread.info/dash/bejne/kalm29updKScgpM.html Когда нужен поиск заданного значения в массиве, его можно выполнять так, как показано здесь, но можно воспользоваться и вышеупомянутой общей схемой, например, искать первый элемент, который больше или равен заданному значению (цикл while в этом случае идёт до 2 элементов, l и r смещаются на m).

  • @Bibliophilos
    @BibliophilosАй бұрын

    @@op_ulstu благодарю! Вы один из топовых авторов по объяснению алгоритмов.

  • @lekopin1783
    @lekopin1783Ай бұрын

    Спасибо большое! Отличный урок!

  • @Bibliophilos
    @BibliophilosАй бұрын

    Спасибо за все видео, очень доступно объясняете, пожалуйста, не останавливайтесь, если есть такая возможность:)

  • @user-vf7xz3kd9h
    @user-vf7xz3kd9hАй бұрын

    Матреца смежнасти лутшая

  • @front-rud
    @front-rudАй бұрын

    Я вообще не понимал как устроен этот алгоритм и другие, пока не начал смотреть ваши видосы. Все просто разжеванно, спасибо большое !

  • @hackernet1408
    @hackernet1408Ай бұрын

    Здравствуйте ! Будут ли лекции по парсочам , строкам ? Планируется ли регулярное выкладывание видео ? . Хочу поблагодарить вас за ваш большой труд, вы помогаете довольно многим людям, студентам. Хороший интерактивный формат (коротко по делу, с упоминанием нюансов, приложения). Также хотел спросить есть ли конспекты по этим видео ?

  • @pashaxd7337
    @pashaxd7337Ай бұрын

    Лучший канал по алгоритмам и структурам данным на русскоязычном пространстве.

  • @203-ve8hk
    @203-ve8hkАй бұрын

    😨😓💩🤡👌🏿🤛🏿💁🏿

  • @macbeth143
    @macbeth143Ай бұрын

    thank you so much, do you have anything related to number theory or math for cp in general ?

  • @FaxWeb7
    @FaxWeb7Ай бұрын

    Прям вовремя видос выпустили, я как раз сейчас этот алгоритм изучаю. Было бы классно увидеть ролики о динамическом программировании на вашем канале, очень хорошо объясняете, только вот просмотров мало(

  • @user-zw3rq6ij2n
    @user-zw3rq6ij2nАй бұрын

    Это слишком хорошо

  • @huseynscratchprogram2438
    @huseynscratchprogram2438Ай бұрын

    Здравствуйте я написал этот же код но результат немного иной выходит вот результат:45 40 65 75 X 65 40 0 30 X 50 60 35 100 X А вот код: //Dijkstra algorithm with an array #include <bits/stdc++.h> using namespace std; const int INF=1e9; vector<int> Dijkstra(int start,vector<vector<pair<int,int>>> graph) { vector<int> dist(graph.size(),INF); vector<bool> visited(graph.size()); dist[start]=0; for(int i=0;i<graph.size();i++) { int nearest=-1; for(int v=0;v<graph.size();v++) if(!visited[v] && (nearest==-1 || dist[nearest]>dist[v])) nearest=v; visited[nearest]=true; for(auto &[to,weight] : graph[nearest]) if(dist[to]>dist[nearest]+weight) dist[to]=dist[nearest]+weight; } return dist; } int main() { int VertexCount,EdgeCount; cin>>VertexCount>>EdgeCount; vector<vector<pair<int,int>>> graph(VertexCount); for(int i=0;i<EdgeCount;i++) { int a,b,weight; cin>>a>>b>>weight; graph[a].push_back({b,weight}); graph[b].push_back({a,weight}); } int start; cin>>start; vector<int> dist=Dijkstra(start,graph); for(int i=0;i<dist.size();i++) { if(dist[i]!=INF) cout<<dist[i]<<" "; else cout<<"X "; } }

  • @macbeth143
    @macbeth143Ай бұрын

    how can i start CP

  • @OrionKropt
    @OrionKroptАй бұрын

    Мего харош Просто лучший

  • @borsuk7617
    @borsuk7617Ай бұрын

    Где я могу найти код из урока?

  • @op_ulstu
    @op_ulstuАй бұрын

    acm.khpnets.info/wiki/Алгоритм_Флойда

  • @huseynscratchprogram2438
    @huseynscratchprogram2438Ай бұрын

    Здравствуйте вы онлайн уроки проводите для олимпиады?

  • @op_ulstu
    @op_ulstuАй бұрын

    Здравствуйте. Увы, нет.

  • @aveok1
    @aveok1Ай бұрын

    Ты топ

  • @klausvreinherz7145
    @klausvreinherz71452 ай бұрын

    у вас звезда амперсанд в аргументе сплита - это бан на полчаса

  • @op_ulstu
    @op_ulstu2 ай бұрын

    Что именно вас смутило? a и b в split() - это указатели на вершины результирующих деревьев, они имеют тип Node *. Это выходные параметры, мы хотим изменять их внутри split, поэтому передаём их по ссылке: Node *&. Если хотите, можете возвращать из split пару указателей: pair<Node *, Node *> split(Node *n, int key).

  • @klausvreinherz7145
    @klausvreinherz7145Ай бұрын

    @@op_ulstu это некоторый мем с лабораторных работ по C в моём универе, если подойти с таким на сдачу лабы, то вас не будут принимать следующие полчаса, так как в си такая конструкция не имеет смысла. Если говорить о том что меня смутило в этом видеоролике, то мне и словами не описать ту боль которую мне пришлось пережить чтобы понять как дерево на самом деле работает, то как вы объяснили на визуализации конечно складно и понятно, но код так не работает, (я говорю о ф-ии split). Возможно этого поверхностного "понимания" достаточно чтобы использовать такой подход как инструмент в олимпиадных задачах и далеко не всем хочется знать как обстоят дела на самом деле

  • @op_ulstu
    @op_ulstuАй бұрын

    @@klausvreinherz7145 Код в видео написан на C++, а не на C. Здесь & - это не операция взятия адреса (в объявлении типа эта операция всё равно не имела бы смысла), а признак ссылки. В показанном коде *& - не две взаимообратные операции, а ссылка на указатель.

  • @klausvreinherz7145
    @klausvreinherz7145Ай бұрын

    @@op_ulstuпоэтому я и упомянул что лабораторные мы писали на си

  • @klausvreinherz7145
    @klausvreinherz7145Ай бұрын

    @@op_ulstu так как этот мем был несколько неуместен, но всё же достойным упоминания в обществе моих одногрупников, с коими я и пытался смотреть ваше видео

  • @user-tr8xi3ik3c
    @user-tr8xi3ik3c2 ай бұрын

    огромное спасибо за объяснение и за проделанную работу!

  • @pechinkin
    @pechinkin2 ай бұрын

    очень хороший мини-курс, очень! спасибо. и анимация приятная, когда от одного к другому переходит. интересно, как это сделано всё разжёвано в нужной степени, вкусно)

  • @user-sf9fd8up5b
    @user-sf9fd8up5b2 ай бұрын

    великолепно )

  • @user-do3zm3vp2f
    @user-do3zm3vp2f2 ай бұрын

    Как же шикарно автор объясняет. Я прям кайфую от объяснений автора.

  • @user-nt7lj6eu6b
    @user-nt7lj6eu6b2 ай бұрын

    Спасибо за видео. Возник вопрос, почему есть утверждение, что при использовании матрицы смежности асимптотика алгоритма равняется O(V**2), - я понимаю вашу логику, что проверок условий действительно будет больше, но ведь самих запусков dfs - столько же, ведь у нас в условии IF фигуририрует visited, который мы обновляем на предыдущуих вызовах рекурсии

  • @op_ulstu
    @op_ulstu2 ай бұрын

    Проверка, существует ли ребро между вершинами a и b, - не бесплатная операция. Представьте себе запуск DFS на пустом графе из 1000 вершин. Если граф был сохранён в виде списков смежности, то после запуска DFS от каждой вершины мы сразу делаем вывод, что у неё нет соседей, так как соответствующий список смежности пуст; в цикл for мы даже не входим. Итого O(1) на обработку каждой вершины и общая сложность O(V) для запусков от всех вершин. Если граф был сохранён в виде матрицы смежности, после запуска от любой вершины алгоритму придётся просмотреть 1000 ячеек соответствующей строки матрицы, чтобы понять, что там всюду нули и соседних вершин нет. Итого O(V) на обработку каждой вершины и общая сложность O(V^2).

  • @user-vf7xz3kd9h
    @user-vf7xz3kd9h2 ай бұрын

    А 8адачу с сасудами можно решить с помощи дп

  • @user-vf7xz3kd9h
    @user-vf7xz3kd9h2 ай бұрын

    Задачу

  • @onlyc583
    @onlyc5833 ай бұрын

    Большое спасибо за урок! Очень просто и понятно объяснили как работает декартово дерево, как балансируется и как его писать

  • @user-dz6hn8vk9w
    @user-dz6hn8vk9w3 ай бұрын

    Лучшее видео!

  • @MartinIden-hn7ld
    @MartinIden-hn7ld3 ай бұрын

    Огромное спасибо за видео

  • @user-do3zm3vp2f
    @user-do3zm3vp2f3 ай бұрын

    Как же автор все круто объяснил. Я физически ощутил как поумнел и вспомнил множество задач где можно было бы использовать бинарный поиск предварительно отсортировав коллекцию любой сортировкой с той же логарифмической сложностью.

  • @z3sker467
    @z3sker4673 ай бұрын

    лучший канал, спасибо огромное❤

  • @michaelbom1100
    @michaelbom11003 ай бұрын

    Большое спасибо за видео! Очень понятно и доступно!

  • @beworld_pasha
    @beworld_pasha3 ай бұрын

    В общем, это буквально ИДЕАЛЬНЫЙ канал, чтоб заботать алгоритмы к интервью. Спасибо огромное!