Блог пользователя JKeeJ1e30

Автор JKeeJ1e30, история, 8 лет назад, По-русски

Всем привет. Многие из Вас знают веселую игру 2048(насколько я помню, некоторое время назад здесь даже появлялись игры-аналоги). Мне вот стало интересно, а кто каких результатов добивался в этой игре? И, если не трудно, поделитесь стратегиями.

Мой рекорд(да, это рекорд, больше не смог пока) можете увидеть в скриншоте внизу. Это я на смартфоне развлекался. Розовый в квадрате(2, 2) — это 4096.

http://codeforces.com/predownloaded/e0/ab/e0aba783d08a49aaadeb7816f9454df5785c5616.png

Полный текст и комментарии »

  • Проголосовать: нравится
  • -18
  • Проголосовать: не нравится

Автор JKeeJ1e30, история, 8 лет назад, По-русски

http://vk.com/denull?z=photo189814_392448913%2Fc36b2b2a74ebcab8f9

Я не играл в доту. Я кодил. И теперь, когда меня спрашивают, стоит ли собирать линзу на Луне, я отвечаю, что сначала туда надо долететь.

Полный текст и комментарии »

  • Проголосовать: нравится
  • -37
  • Проголосовать: не нравится

Автор JKeeJ1e30, история, 8 лет назад, По-русски

Здравствуйте. Кто-нибудь сталкивался с багом, что при попытке написать комментарий в блог или при голосовании происходит переадресация на сам топик? То есть, просто отбрасывает на начало страницы. С чем это может быть связано? Браузер — хром, ось — восьмерка

UPD: так как я не могу писать комментарии, отвечать буду апдейтами топика

Полный текст и комментарии »

  • Проголосовать: нравится
  • +31
  • Проголосовать: не нравится

Автор JKeeJ1e30, история, 9 лет назад, По-русски

Здравствуйте.
Вчера стартовали очередные сборы в Петрозаводске. Посмотреть результаты можно тут.
К сожалению, Снарк не достаточно оперативно обновляет результаты сборов, к примеру результаты первого дня соревнований стали доступны только часам к десяти дня второго, а ранклист контеста во второй день до сих пор не появился, хотя само соревнование идет уже около получаса.
В связи с этим вопрос:
1) Нельзя ли пооперативнее?
2) Может ли кто-нибудь кинуть прямую ссылку?
UPD: результаты обновились.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +18
  • Проголосовать: не нравится

Автор JKeeJ1e30, история, 9 лет назад, По-русски

Найдя в своем шкафу футболку с чемпионата Урала, я вдруг решил вспомнить: а когда этот чемпионат проходил? Восстановив цепь событий, я понял, что это было в мае 2013 года, и я даже пытался быть блогером этого события, но не пошло.
Конечно, у меня память никогда не была идеальной, а знающие меня люди наверняка скажут, что она очень плохая... Но ведь если взять и покопаться в своем шкафу, то наверняка далеко не все смогут вспомнить, с какого события была та или иная футболка, каким образом она была заработана. Как раз по поводу чемпионата Урала — до сих пор можно найти видео с того события, но это лишь потому, что тогда был разыгран очень большой призовой фонд и организация была на достаточно высоком уровне(с известными косяками, но это ладно). В то же время, ранклист найти уже проблематично. А что по поводу более мелких соревнований? На многих футболках не указан ни год, ни номер соревнования — просто подписана компания, которая проводила данный контест.
А ведь при этом наша память, те мгновения, которые мы переживаем на том или ином событии — это то, что потом будет приятно вспомнить, посиживая с чаем в кругу близких родственников или друзей, или просто решая задачу из "реальной жизни" и представлять, как здорово было бы по ней заработать accepted на контесте. Ведь именно счастливые минуты наших триумфов или мгновения наших неудач, которые заставили нас сказать самим себе "я могу кодить гораздо лучше" потом становятся залогом того, что мы раз за разом возвращаемся в этот прекрасный мир спортивного программирования.
Разумеется, полностью всю информацию(с ранклистом, с видео, с фотографиями события) оставлять на футболке невозможно. Но, может быть — все-таки стоит оставлять какую-то информацию? Может быть, ссылка на группу в ВК. Или же название события, по которому можно легко нагуглить информацию. QR-код вполне подойдет — это, к тому же, достаточно модно(если, конечно, организаторы заботятся о стиле).
Может быть, в этом топике найдутся люди, которые будут совершенно со мной не согласны — я не против, я всего лишь высказал свою точку зрения. Буду рад любым комментариям.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +42
  • Проголосовать: не нравится

Автор JKeeJ1e30, история, 9 лет назад, По-русски

Может кто-нибудь сказать, когда ориентировочно пройдет следующий див1 раунд? Желательна информация, приближенная к действительности(если сюда заглянет Максим Ахмедов — будет замечательно)

Полный текст и комментарии »

  • Проголосовать: нравится
  • +2
  • Проголосовать: не нравится

Автор JKeeJ1e30, 11 лет назад, По-русски

Facebook и ВКонтакте подсказывают что сегодня день рождения у самого титулованного тренера России. Хочется поздравить этого замечательного человека и пожелать дальнейших успехов.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +78
  • Проголосовать: не нравится

Автор JKeeJ1e30, 11 лет назад, По-русски

Сегодня стартовал чемпионат Урала. Стартовал он с "Битвы гигантов". Результаты можно увидеть здесь. Матч получился весьма интересным и достаточно напряженным, и, как мне кажется, такой формат соревнований очень интересен. Но давайте обо всем по порядку.


Команда SPb SU 4 перед контестом

Обратим внимание, в каких средах программирования пишут команды.


SPb SU 4

 Moscow SU ST


SPb NRU ITMO

 Ural FU и MIPT

А вот чем пользуются китайцы:

 Sun Yat-Sen U

 Peking U

Первый Accepted получила команда Shanghai Jiao Tong U на 10 минуте, но буквально сразу же команды SPb NRU ITMO и SPb SU 4 сдали задачу E.

 Первый Accepted у Jiao Tong

 Но следом за этим сданная задача у SPb NRU ITMO

 А следом и у SPb SU 4

К окончанию первого часа счет был 15:11 в пользу сборной России, но, как оказалось, победителя в матчевом противостоянии определять было еще рано. Сборная Китая ближе к середине встречи сравняла счет и даже вышла вперед по задачам, правда, с достаточно плохим штрафным временем.


Petr пишет сообщения в свой блог


Moscow SU ST: подкрепились — и снова в бой!

Стоит заметить, что команды Китая смотрелись очень ровно на протяжении всего контеста. С самого начала немного отстала команда Sun Yat-Sen U, но в середине второго часа они сдали три задачи и подравнялись с остальными командами. Несколько выделялась команда Jiao Tong — но, опять-таки, не очень сильно. В сборной России закономерно предсказуемо выделялась команда ITMO, на уровне команды Jiao Tong решали команды SU 4 и ST. Команды MIPT и Ural FU выступили, прямо скажем, намного слабее, чем остальные российские команды. Я ничего не хочу этим сказать — раз эти команды отобрались на "Матч Гигантов" — значит, они заслужили выступать на этом уровне. Но то, что эти две команды решали хуже остальных трех российских команд — думаю, никто оспаривать не станет.


Очередной плюс у команды ST

Ближе к заморозке российская сборная снова ушла в небольшой отрыв. Этот отрыв обеспечили команды MIPT, сдавшие наконец-то четвертую задачу, и ITMO, сдавшие 11-ю задачу K


Девушка вешает очередной шарик к столу команды ITMO за сданную задачу K

Комментарий моего тиммейта IlyaLos: "Смотрю за командой ITMO, они пишут стресс за стрессом. Тут за комп садится Гена, пишет строк 15 кода, думаю, очередной стресс, тут он копипастит этот код, посылает его на сервер, и зрители в зале хлопают. Я в шоке".

И еще немного о команде ITMO от Ильи: "Гена пишет код и... смотрит куда-то в сторону. Посмотрел на команду ST, потом на Нияза, продолжая писать код по задаче. Может, пока он писал задачу, он еще и следующую обсуждал? "Нияз, пока я пишу B, давай с тобой A обсудим. Рисунок нарисовал? У тебя неправильный рисунок. Подожди... Все, В прошла. У тебя ребро из 2 в 3 не нарисовано".

Результаты команд еще неизвестны, но скорее всего у SU 4 9 задач, ST тоже 9(они сами еще не знают вердикта по всем своим сабмитам). Вопрос в том, сдали ли Jiao Tong 9(10) задачу. Если они сдали 9, то они проиграли ST. Если не сдали 9-ю, то следовательно пьедестал полностью российский.

Часть фотографий предоставлена HolkinPV

Полный текст и комментарии »

  • Проголосовать: нравится
  • +129
  • Проголосовать: не нравится

Автор JKeeJ1e30, 11 лет назад, По-русски

И вот наступил долгожданный нулевой день, или день поезда. С вагоном нам повезло: ни о каких биотуалетах тут не слышали, печет как в духовке. Осталось ехать еще 22 часа. Но все это мелочи, самое главное — это хорошая компания моих сокомандников. Ждем не дождемся приезда в Екб.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +8
  • Проголосовать: не нравится

Автор JKeeJ1e30, 11 лет назад, По-русски

Добрый вечер всему сообществу CF. Совсем скоро стартует Чемпионат Урала — 2013. В этом году там соберется особенно сильный состав участников. Саратовский Государственный Университет в этом году будет представлен одной-единственной командой Saratov SU#3(Kholkin, Los, Chumachenko) на этом замечательном мероприятии. Хоть меня и не выбрали официальным блогером Чемпионата Урала, я все-таки решил попробовать свои силы в этом нелегком деле, а уж вы потом решайте, успешный опыт или не успешный. С первого по третье мая буду стараться писать блог. Вы уж не судите меня строго, большого опыта в написании блогов нет.
Наш поезд выезжает в Екб сегодня вечером. С нетерпением жду поездки и новых впечатлений.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +101
  • Проголосовать: не нравится

Автор JKeeJ1e30, 11 лет назад, По-русски

Году этак в 2010, когда впервые я слушал лекцию MikeMirzayanov про хеши, я услышал чудесную фразу от Михаила Расиховича: "Вероятность того, что хеш упадет, примерно такая же, как если метеорит упадет прямо вам на голову".

2012 год: публикация по антихештесту. 2013 год: взрыв метеорита над Челябинском.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +115
  • Проголосовать: не нравится

Автор JKeeJ1e30, 11 лет назад, По-русски

Несколько дней назад в Петрозаводске начались традиционные зимние сборы. С программой сборов, а так же с текущим положением команд можно ознакомиться здесь

Полный текст и комментарии »

  • Проголосовать: нравится
  • -34
  • Проголосовать: не нравится

Автор JKeeJ1e30, 11 лет назад, По-русски

Всем привет! Сегодня в 15:11 по Московскому времени состоится очередной конец света. Предлагаю по окончании собраться здесь и обсудить задачи выживания.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +65
  • Проголосовать: не нравится

Автор JKeeJ1e30, 11 лет назад, По-русски

Еще достаточно долго будет обсуждаться недавно прошедший полуфинал, будут сделаны выводы тренерами и организаторами. Я же хотел бы написать о своих ощущениях от прошедшего полуфинала.

Для меня это была первая поездка на полуфинал(хочется верить, что не последняя) и вообще в Петербург. Кому-то это может показаться смешным, но я до этого ни разу не был в славном городе на Неве. Саратов, как всегда, приехал бороться за самые высокие места. Каких-либо конкретных задач перед нами не ставилось, но мы прекрасно понимали, что нам будет сложно состязаться с такими мощными командами как Saratov SU 1 и Saratov SU 2, и поэтому о финале мы даже не мечтали. Простого попадания в ТОП-50 уже хватило бы для того, чтобы наше выступление не сочли провальным.

Итак. Саратовская делегация приехала в славный город Санкт-Петербург 29 ноября. Таким образом, было целых три дня перед самим полуфиналом. Первый день был разгрузочный. После заселения в гостиницу мы решили погулять по Питеру. Дошли до Казанского собора (если кто не знает — напротив Казанского собора стоит офис ВК), прогулялись по Невскому проспекту, дошли до Мойки, вышли на Дворцовую площадь. Приятно удивило то, что почти в любой забегаловке на Невском есть халявный вайфай. На вечер был запланирован поход в театр. Изначально MikeMirzayanov и Fefer_Ivan предложили какую-то пьесу про блокаду Ленинграда, но, по рекомендации Polichka, мы пошли в театр Акимова на пьесу "Хитрая вдова". Как сказала Полина, театр Акимова ей порекомендавали местные театралы. Театр действительно хорош — всего 900 рублей за места на первом ряду, очень уверенная актерская игра на протяжении всей пьесы, да и пьеса сама по себе неплохая. Даже MikeMirzayanov, не любитель комедии, сказал после выхода из театра что спектакль неплохой. После завершения спектакля мы сразу отправились домой и завалились спать — на следующий день была запланирована тренировка по задачам последнего ВКОШПа.

На следующий день в 10:05 все Саратовские команды написали ВКОШП. Писали команды Saratov SU #1 из-под пользователя Fefer_Ivan, а так же команды Saratov SU #2, Saratov SU #3, Saratov SU #4 и команда Saratov SU Coaches. Результаты можно найти здесь 2012-2013 Всероссийская командная олимпиада школьников по программированию (ВКОШП 12) Вкратце о том, как мы решали задачи: первые 7 задач мы решили достаточно быстро, запомнилось только то что мы не сразу поняли фишечку задачи I и натупили с условием задачи K(конкретно я натупил, признаюсь). Дальше я сел за задачу H и так и не смог придумать вполне естественную идею, а IlyaLos и HolkinPV пытались пропихать жадное решение по задаче J. Буквально через несколько минут после контеста Nerevar сдал задачу F и сказал, что они неправильно обрабатывали частный случай. Вечером в Санкт-Петербург прилетела natalia, доведя таким образом соотношение участники/тренеры до 4/1. Сказала, что мы напрасно написали ВКОШП и что их команда ни разу так не делала.

На следующий день был пробный тур. Приехав в ИТМО, мы получили мейловские пакетики, а так же зонты Яндекса. Зонт Яндекса оказался настолько полезным девайсом, что я сразу же решил благоразумно его забыть прямо в актовом зале, что у меня успешно получилось. Позже Nerevar заметил, что книжка "97 этюдов для программистов" прекрасно подходит для туалета.

В актовом зале саратовская делегация приветствовала старых друзей — уехавших в МГУ ребят из Саратова команды ST и SG, PavelKunyavskiy, а так же многих других. После окончания церемонии открытия мы пошли на пробный тур. Нам досталось место во втором холле, и без сопровождающего лица от ИТМО мы чуть не заблудились, немного поплутав по коридорам, и в конце концов нашли какого-то парня который проводил нас в наше помещение. Место нам досталось очень удобное — в дальнем углу: мимо нас никто не ходил и не отвлекал. Но на пробном туре выяснилась достаточно неприятная вещь — наш комп был более чем в 6 раз медленнее сервера. В целом, мы не сильно расстроились из-за этого потому что редко на таких ответственных состязаниях бывают такие задачи в которых в ТЛ приходится упихивать.

Вечером мы ничего серьезного не делали и начали играть партию в покер, к моменту отбоя я опережал только Fefer_Ivan, почти на 20% уменьшив свой первоначальный стек. С мыслью "не везет мне в картах — повезет на контесте" я ушел спать.

И вот он сам — полуфинал. Несмотря на то, что на нас не висел груз ответственности за результат, безусловно, каждый из нас волновался. Контест по традиции задержали на несколько минут, что не добавило бодрости духа. Но вот, последние волнения пройдены — контест начался! По традиции, два комплекта условий из трех мы выкинули, а оставшийся поделили примерно пополам, таким образом, Паша, как обычно, сел писать шаблон, Илья читал задачи A-G, мне достались задачи H-L.

Пролистав задачи, я решил читать задачи H и L, так как мне показалось что они не очень сложные. Однако задачу L я решил отложить до лучших времен, не сразу вкурив что конкретно нужно сделать, а задача H мне понравилась с первого прочтения. Единственная проблема — я не сразу правильно прочитал условие этой задачи. После того, как Паша закончил писать шаблон, я показал ему задачу, и он сразу спалил мои неточности. К этому времени в ранклисте появились задачи A и G, Илья сказал что "задача G мне понравится", а сам сел вместе с Пашей писать задачу А. Я в это время одновременно придумывал задачи H и G и к тому моменту как Илья с Пашей сдали А обе задачи были придуманы. Сев за компьютер, мы заметили, что появился первый плюс по задаче E, и посадили Илью за эту задачу. Впоследствии оказалось, что это решение было неправильным — нужно было Илье давать, например, реализационную задачу F или задачу L, но тогда мы этого еще не знали. Написали мы задачи H и G, правда, не сразу — по задаче G мы допустили пару мелких багов, из-за чего пришлось ее отлаживать а в задаче H я остановил Пашу когда он написал if(m.count()) — я решил, что это не нужно, что привело к дополнительной попытке. Тем не менее, эти две задачи мы достаточно быстро сдали, и после первого часа у нас были три задачи. Следующие два часа прошли уже не так хорошо. Я сел за задачу C, Илья сделал несколько предложений по решению задачи E, которые сам же впоследствии и палил. Как и достаточно многих, меня смутило то, что в задаче С ответ нужно было выводить в дробях, поэтому, зная решение с бинпоиском, я пытался придумать какой-нибудь конструктив. В итоге придумал целых два, но они оба спалились на 7 тесте. Тем не менее, эти конструктивы помогли мне понять, что знаменатель не превышает 10^5 а числитель 10^6. К этому времени было принято решение, что Илья занимается другими задачами, а я читаю и придумываю Е.

Задачу Е я придумал достаточно быстро, и Паша с Ильей сели ее писать. К этому времени я уже был абсолютно уверен, что в С надо написать бинпоиск, что мы и сделали сразу, как только получили плюс по Е. К сожалению, пока писали, понаставили лишних ассертов и неправильную точность взяли, но в конце концов мы сдали и ее перед самой заморозкой. Взглянув на монитор, у нас возникло достаточно странное чувство. Стало понятно, что, если мы сдаем еще хотя бы одну задачу, мы выходим в финал. К сожалению, я очень долго придумывал правильный конструктив в задаче J, а задачу B Илья прочитал неправильно.

В общем, когда мы вышли после окончания контеста, у нас были смешанные чувства. С одной стороны, мы еще не знали, что SU 2 сдали пятую задачу и опередили нас по штрафному времени, и мы боялись попадать на финал — для финала мы совершенно точно слабоваты, и провалиться на финале не хочется. Так же мы были сильно расстроены неудачным выступлением всех остальных саратовских команд. С другой стороны, нам было приятно, что мы написали контест достаточно неплохо — хотя мы могли сдать и побольше задач, но по крайней мере мы решили задачу, поставленную тренерами — попасть в ТОП-50. В общем, чувства действительно переполняли. На перерыве на еду мы узнали, что SU2 нас все-таки обошли по штрафному времени, и мы за них рады. Успехов им на финале!

После церемонии закрытия мы вернулись в гостиницу и состоялся подробный разбор контеста, каждая команда рассказала о том, что, почему, и как произошло. Надеюсь, что подобного слива у Саратова больше никогда не будет. Для меня же поистине сказочная поездка в Питер закончилась. Всем спасибо, кто прочитал это:)

Полный текст и комментарии »

  • Проголосовать: нравится
  • +137
  • Проголосовать: не нравится

Автор JKeeJ1e30, 12 лет назад, По-русски

Семьдесят семь семидневок спустя столетия СГУ стартовало соревнование студентов, соревнующихся сочинением си-подобных структур. Старт соревнования специализированной секции — седьмые сутки семидневки. Самый сильный сочинитель сборной СУ-3 сделал сумасшедший старт: сабмиты сдавались сами. Само собой, сочинителя сморил сон. Сочинитель спал, соперники сдавали. Сочинитель скатился, соревнование стало страшным. Сочинитель сражается со сном. Сон сдался. Сочинитель смотрит: семьдесят седьмая строчка содержит странности. Сабмит. Сдал! Секунды скачут, соренование скоро станет сказкой. Сабмит. Систест сопротивляется. Снова сабмит, систест стоит. Снова сабмит. Сдается систест! Спокойный, сочинитель старается сдать семь задач. Сабмит. Сдается. Спустя семьдесят секунд сабмит. Седьмая сдалась! Сочинитель счастлив.

Полный текст и комментарии »

  • Проголосовать: нравится
  • -21
  • Проголосовать: не нравится

Автор JKeeJ1e30, 12 лет назад, По-русски

Уже через три часа стартует первый раунд FHC. Напомним, что в следующий этап проходят все те участники, которые решат столько же задач, сколько 500-е место, при условии что 500-й участник решил хотя бы одну задачу. Раунд продлится 24 часа

ссылка на раунд — https://www.facebook.com/hackercup/problems.php?round=225705397509134 Не забываем что в прошлый раз были проблемы с https

Полный текст и комментарии »

  • Проголосовать: нравится
  • +8
  • Проголосовать: не нравится

Автор JKeeJ1e30, 12 лет назад, По-русски

И вот это чудо случилось,

Исполнились просьбы двоих,
И стала одна машиной,
Нейроны в сети пустив.

Машина же девушкой стала:
Открыв потихоньку глаза,
Сердце тотчас застучало,
Явив миру чудо-глаза.

Одна сразу в сеть запустилась,
Скачав терабайты в себя;
Знаниям она предавалась,
Упиваясь до байтов конца.

Вторая прошлась по бульварам,
Подставляя руки дождю,
И солнце в глазах заиграло,
Улыбаясь этому дню

Потом поиграла с любовью,
Добавив ревности остроты,
И, справившись с новой ролью,
Она написала стихи...

И все хорошо, да вот только
Лишь первый месяц прошел - 
Одна заскучала по парню,
С которым была вдвоем.

Другая же с сожаленьем
Сразу почти поняла:
Не сможет стать человеком,
Ведь воспитанием не та.

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

Не будем читать мы морали,
А скажем лишь раз и навек:
Хорошо, что я - не компьютер,
Хорошо, что я - Человек.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +65
  • Проголосовать: не нравится

Автор JKeeJ1e30, 12 лет назад, По-русски

Не так давно я писал статью, в которой я описывал данный алгоритм. После серии доработок, благодаря идее  Narg  появилась более хорошая версия данного алгоритма. Ниже излагаю ее, без доказательств(доказательства найдете в предыдущей версии).


Шаг 1. Произведем конденсацию графа. Если в компоненте связности есть цикл отрицательного веса - значит, в этой компоненте связности из любой вершины можно добраться в саму себя по неограниченно малому пути. Помечаем все вершины этой компоненты черным цветом. Если же в компоненте нет такой вершины - помечаем все ее вершины белым цветом.

Шаг 2. Запускаемся из каждой вершины 0-1 обходом.

Собственно, вот обновленная версия алгоритма.

Недавно я заинтересовался, насколько медленно/быстро работает мой алгоритм в сравнении с алгоритмом Флойда. Я взял код Эдварда Давтяна и протестировал его Флойд и мой алгоритм(генератор тестов). Тестирование проводилось на почти полных, разреженных в 4 раза и на разреженных в 20 раз графах. Результат превзошел все мои ожидания:

 n m тип ребер(все положительные +, если есть отрицательные -) время работы Флойда, мсвремя работы моего алгоритма, мс 
 1009000 +38  36
 1009000 48 68
 20039000 263 160 
 20039000 280 513 
 400159000 2080 1224 
 400159000 2033 4054 
 500240000 4043 2336 
 500240000 3880 7482 
 1002500 31 93 
 1002500 47 110 
 20010000 265 125 
 20010000 276 226 
 40040000 2068 409 
 40040000 2028 1096 
 50062500 4027 701 
 50062500 3861 2019 
 100500 29 93 
 100500 37 94 
 2002000 237 105 
 2002000 265 120 
 4008000 1968 180 
 4008000 1954 305 
 50012500 3902 251 
 50012500 3766 492 

Полный текст и комментарии »

  • Проголосовать: нравится
  • -24
  • Проголосовать: не нравится

Автор JKeeJ1e30, 13 лет назад, По-русски

Я не знаю, баяном ли является то, что я придумал, но единственный алгоритм, который я нашел на емаксе, решает задачу при помощи Флойда-Уоршелла, который, как известно, работает за O(n3). Ниже приводится описание алгоритма, который работает за O(n*m).


Итак, суть задачи. У нас есть произвольный ориентированный граф с n вершинами и m ребрами, нужно найти все пары вершин, такие что путь между ними бесконечно мал.

Шаг 1. Из данного графа получим конденсацию. 
 
Следующее утверждение: если в компоненте сильной связности есть цикл отрицательного веса, то между любой парой вершин из этой компоненты сильной связности есть бесконечно малый путь.

В самом деле, доберемся из начальной вершины до цикла - а это мы можем сделать, так как у нас компонента сильной связности, - пройдем по циклу любое произвольное число раз и перейдем в нашу вторую вершину - опять же, мы сможем это сделать в силу КСС.

Шаг 2. Итак, запустим Форда-Беллмана в каждой КСС. Он найдет нам отрицательный цикл, если он есть. 

Шаг 3, а. Произведем серию поисков в ширину на 0-1 графе из каждой вершины полученной конденсации.

Давайте будем называть "черной" ту вершину конденсации, у которой внутри нее есть цикл отрицательного веса. 

Утверждение: если в первоначальном графе между двумя вершинами есть путь, проходящий хотя бы через одну "черную" компоненту связности(включая компоненты связности этих двух вершин), то между двумя вершинами существует сколь угодно малый по величине путь.

Действительно, зайдем в эту компоненту связности, дойдем до цикла, проитерируемся по циклу любое произвольное число раз, и потом выйдем из цикла и дойдем до второй вершины.

Теперь как мы будем осуществлять поиск в ширину. Если первая вершина была черная, то перекрасим всех ее сыновей в черный цвет, и так далее. Иначе сначала переберем всех черных сыновей, и от них запустимся как раньше - покрасим всех сыновей черного сына в черный цвет. Очевидно, что все вершины, которые стали черными - между ними и начальной вершиной лежит вершина, в которой есть цикл отрицательного веса.

Шаг 3, б. Результаты обходов сохраним в матрице смежности.

Шаг 4. Для каждой пары вершин за O(1) найдем, в какой КСС они лежат, и по построенной матрице определим, лежит ли между ними цикл отрицательного веса, так же за O(1). 

Асимптотическая сложность: по шагам: 1)O(n*logn) 2)O(n*m) 3)O(n1*m1); так как n1<=n и m1<=m, получим O(n*m). 4)O(n2). 
То есть суммарно не более чем O(n*m)

Сложность по памяти: 0) начальный граф - O(m + n) 1) для хранения конденсированного графа O(m + n) и для каждой вершины ссылка на номер ее КСС - O(n)  2-3) под матрицу O(n1*n1) = O(n*n) 4) 0. 
Итого O(n2 + 2*m + 3 * n)

Вопросы от автора:
1) это баян?
2) Видите ли вы какие-нибудь оптимизации? Особенно это касается оптимизации по памяти.

Реализация алгоритма - http://pastie.org/2774882

Полный текст и комментарии »

  • Проголосовать: нравится
  • +26
  • Проголосовать: не нравится

Автор JKeeJ1e30, 13 лет назад, По-русски

Вот у меня уже достаточно давно родился такой вопрос: что в программировании важнее-нестандартный или стандартизированный подход к задаче?


С одной стороны, каждая задача является творческой, и нужно ее уметь сводить к более-менее стандартной задаче. Есть более-менее стандартные методы: нужно посмотреть ограничения, как только на них посмотришь-сразу могут всплыть какие-то стандартные алгоритмы, например, при ограничении 100000-какая-нибудь структура данных, типа дерева отрезков, сортировка ну и так далее. Но для того, чтобы понять, какие можно наложить условия на задачу-нужен какой-то нестандартный подход, умение формулировать эти самые условия и понять, почему они работают.

Есть класс задач, которые можно решить с помощью какого-нибудь стандартного подхода, но, если использовать нестандартный подход-не придется "запихивать", проще и быстрее пишется. Есть задачи, которые без творческого(нестандартного) подхода не решить.

С другой стороны, именно творческий подход иногда мешает. Например, даны ограничения, на которых не до конца понятно, какая асимптотика зайдет-и ты пытаешься придумать решение с меньшей асимптотикой(а решения с меньшей асимптотикой может и не быть). Так же программисты, которые привыкли решать задачи сведением их к более простым задачам, заметно хуже пишут задачи на реализацию(по сравнению с общей массой).

Понятно, что нельзя сказать, что для программиста важнее. Важно, разумеется, и то, и то. Но вот какие задачи решать проще именно вам-те, которые более творческие, или же более стандартные и реализационные задачи? 

Полный текст и комментарии »

  • Проголосовать: нравится
  • -9
  • Проголосовать: не нравится

Автор JKeeJ1e30, 13 лет назад, По-русски
Во время переписки обнаружил это:


Отправлено 3 минуты назад
Прочитано 4 минуты назад

Быстро же тут люди читают:)

Полный текст и комментарии »

  • Проголосовать: нравится
  • +17
  • Проголосовать: не нравится

Автор JKeeJ1e30, 13 лет назад, По-русски

Как только что я слышал в репортаже "Вести-24", в СЩА собираются создавать "теневой" интернет.

Он будет отличаться от обычного тем, что провайдеры не смогут тебя заблокировать, какую бы ты переписку не вел. Информация будет подаваться по каким-то другим каналам связи(я так и не понял каким). Как сказано было в репортаже, один из американских послов заявил, что "это поможет США увеличить влияние на остальные страны". И, как заявил он же, "это создано, для того чтобы революционеры разных стран могли общаться"

Если это правда-а это похоже на правду, учитывая поведение США в последние лет 10 и то, что один из послов уже подтверждает информацию-то я просто не знаю, как назвать американцев. Тупые-после Задорнова уже не актуально. Тем более что в мировой политике они обычно не тупые. Козлы-безусловно, так как вмешательство во внутренние дела какой-либо страны, в общем-то, считается преступлением(не для американцев, понятное дело). Но не только козлы, потому что, помимо революционеров, выйдут на волю и террористы(если они не управляются Пентагоном-для Америки неприятность), педофилы(которые блокируются в обычной паутине), нацисты и прочая нечисть. Или все-таки какое-то управление будет? Тогда со стороны кого? США? Но тогда можно сказать, что они блокируют революционеров в своей собственной стране, а это как минимум нечестно по отношению ко всем остальным странам(хотя я уже говорил про честность с точки зрения Штатов).

Короче, если это все не журналистская "утка", то мне это все не нравится. А какого ваше мнение?

Полный текст и комментарии »

  • Проголосовать: нравится
  • -77
  • Проголосовать: не нравится

Автор JKeeJ1e30, 13 лет назад, По-русски

http://saratov.kp.ru/daily/25659/822490/

Так что все кто вышел в следующий круг яндекса, mail.ru, code jam, TCO-футболок мы все равно не получим:)

Полный текст и комментарии »

  • Проголосовать: нравится
  • -32
  • Проголосовать: не нравится

Автор JKeeJ1e30, 13 лет назад, По-русски
Ребят, никто не знает что там с предстоящим гран-при Приазовья? Вот вырезка с сайта:

При этом пятым этапом для второго дивизиона считается Гран-При СПб, то есть для команд, принимавших участие во втором дивизионе Гран-При СПб, данный этап будет внезачётным, а отдельного турнира для второго дивизиона во время Гран-При Приазовья проводиться не будет.

То есть, как я понимаю, второму дивизиону не приходить? Даже если они собираются писать див1, то не имеют права?(еще одна вырезка с сайта):

В IX Открытом Кубке соревнования ведутся в двух дивизионах - первом и втором. Команда может перед каждым этапом выбрать, в каком из двух дивизионов будет соревноваться. Во втором (более простом) дивизионе запрещено участвовать тем, кто в составе какой-либо команды набрал в текущем розыгрыше Открытого Кубка 30 и более призовых очков за сезон в общем зачёте. Также на ряде этапов во втором дивизионе будут предлагаться более простые задачи. Одновременное участие в двух дивизионах во время одного Гран-При или участие в 2 дивизионе команды, не имевшей такого права, автоматически переводит команду в категорию внеконкурсных на текущий Гран-При.

Полный текст и комментарии »

  • Проголосовать: нравится
  • -5
  • Проголосовать: не нравится

Автор JKeeJ1e30, 13 лет назад, По-русски
Захожу на кодфорс-и что я вижу? За ночь потерял 3 единицы вклада. Мне на это если честно плевать, но все-таки интересно-кому я дорогу перешел? При том минусуют прямо-таки толпой и все комментарии. 
Вообще скажу тем кто это делает: На вклад мне наплевать, здесь он не значит ровным счетом ничего. Но вот то что я приобрел врагов меня не радует. Если дело именно в каких-то моих комментариях, или в моих поступках, то скажи: что я такого сделал и как мне исправиться? Потому что если это действительно человек сделал из-за того что я его чем-то обидел, а не просто поднять карму, то я наверное сделал что-то очень серьезное так как он даже мои стихи заминусовал(что обидно)

Полный текст и комментарии »

  • Проголосовать: нравится
  • -58
  • Проголосовать: не нравится