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

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

Где можно найти colorer для C++0x?

На официальном сайте и в гугле не нашел.

Заранее спасибо!

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

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

Автор dyussenaliyev, 13 лет назад, По-русски
Замечал в блогах много кодов без подсветки синтаксиса.
Можно подсветить на сайте http://tohtml.com.
Когда вставите свой код в "Source Code" и нажмете "Highlight" справа
появится подсвеченный код, который можно будет уже скопировать сюда.
Вот пример:
#include <iostream> using namespace std; int main() { return 0; }

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

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

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

Завершилась 1-ая командная олимпиада на http://neerc.ifmo.ru/school/io/
Давайте тут обсуждать задачи.

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

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

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

Рассылка напоминаний google calendar-я на мобильные теперь и в KZ!

Что это?

о Google calendar-е

Что за напоминания?

К вам на сотку приходят смс от гугл календаря о предстоящем мероприятии за установленные вами времена до начала мероприятия.

Как включить напоминания?

Включаются они в настройках (расположено в правом верхнем углу - кнопка алт. текст...)

p.s.: несколько полезных календарей...

topcoder.com/tc

codeforces.ru

google codejam(code.google.com/codejam)

codechef.com

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

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

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

Всем доброе время суток!

Рад пригласить вас на Algoprog Meetup Contest #4 на сайте algoprog.kz.
Автором задач стал я, Дюсеналиев Нуржан, ученик Атырауского казахско-турецкого лицея.

Начало - 8 Августа, 15:00 (Москва)
Тип - ACM
Количество задач - 5 (упорядочены в возрастающем порядке сложности)
Длительность - 2,5 часов

Удачи и надеюсь, что контест вам понравится!

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

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

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

A. Подстрока


Думаю все поймут по коду:



p.s. При больших длинах можно воспользоваться алгоритмом КМП.

B. Третья степень


Ответ равен по модулю P.
Единственная проблема - при вычислении  происходит переполнение.
Как избежать переполнения:
  1. Написать длинку
  2. Написать быстрое умножение по модулю (аналог быстрого возведения в степень)
Объясняю второй способ:



Псевдокод:



Очевидно что работает это за логарифм от b, так как у нас b делится на два каждый раз когда он чётный, а если он не чётный то мы отнимаем от него 1, и он на следующем шагу становится чётным.

C. Функция

Не знал, что проходит наивные решения с предпочётом и закидыванием в сэт или мап.
Ожидались решения с проверкой за О(1) битовыми операциями...
Этот способ должен работать даже если нужно было вычислить f(108)...

И так разбор...
Нужно было сделать то, что написано в условии - пройтись фориком, но быстро проверять.
Как быстро проверять:
Представим себе число X.
Для него существуют такие целые неотрицательные p и q, что 2p - 2q = X если представление X в двоичной записи эквивалентно:
63.........p................q.........0  -  позиции
00000001111111100000  -  число

Заметим, что (2p - 1) - (2q - 1) = 2p - 2q

Теперь рассмотрим 2p - 1:
63.........p...........................0
00000001111111111111.

Рассмотрим 2q - 1:
63...........................q...........0
000000000000000111111

И если отнять 2q - 1 от 2p - 1, то получится то, что нам нужно:
63.........p................q.........0
00000001111111100000


Теперь как проверить число на то, что она в двоичной записи такая 00000001111111100000:
1. Все правые нули сделаем единичками: X|(X - 1). Получится 00000001111111111111
2. Прибавим к 00000001111111111111 единичку. Получится 00000010000000000000
3. И проверяем, что число является степенью двойки(в ней только одна однёрка): X&(X - 1) =  = 0

D. Непростая задачка


Есть несколько способов решить эту задачу. Вот мне известные:
1. Сжатым бором
2. Хэшами (наверняка это самый лёгкий способ)
3. Вроде и суффиксными деревьями тоже решается
4. Говорят прошёл и простой, не сжатый бор...
5. можно с N префикс-функциями, правда памяти N2(добавил Bugman)

Решение хэшами:
1. Нужно перебрать все подстроки.
2. Вычислив их хэши запихнуть в массив.
3. Отсортировать хэши
4. Посчитать количество различных элементов.
Я не буду тут говорить, что такое хэши, а дам лишь ссылку (http://e-maxx.ru/algo/string_hashes) - там всё подробно описано.

E. Подматрица


Так получилось, что и эта задача решается хэшами.

Идея подчёта хэша подматрицы - считать хэш хэшов (способ 1):
h1 =  hash(A1, 1A1, 2 ...  A1, b)
h2 =  hash(A2, 1A2, 2 ...  A2, b)
...
ha =  hash(Aa, 1Aa, 2 ...  Aa, b)
hash(A) =  hash(h1 h2... ha)

Асимптотика O(a * b + c * d).

Идея подчёта хэша подматрицы (способ 2):

В задаче E можно обойтись обычным хэшиком по одному прайму. Если мысленно склеить все строки подматрицы в одну строку, то найти хеш такой строки не составит проблем. Если предпосчитать хеши с каждой позиции на b элементов влево (где это допустимо) и предпосчитать все степени прайма до C * D, то дальнейшее решение можно реализовать за O(C * D) и использовать лишь один прайм.

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

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

Автор dyussenaliyev, 13 лет назад, По-русски
  • Проголосовать: нравится
  • -4
  • Проголосовать: не нравится

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

Привет!

Подскажите пожалуйста, какую книжку читать новичку, чтобы перейти на Java для программирования(пока).

Заранее спасибо.

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

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

Автор dyussenaliyev, 13 лет назад, По-русски
  • Проголосовать: нравится
  • +25
  • Проголосовать: не нравится

Автор dyussenaliyev, 13 лет назад, По-русски
Дан массив из N чисел и Q запросов.
Каждый запрос:
  • Дается два числа L, R.
  • Вывести наилучший подотрезок [i..j], где L <= i <= j <= R.
  • Один отрезок лучше другого, если сумма в нем больше.
  • При подсчёте суммы нужно учитывать повторяющиеся числа как одно число, то есть только один раз.
1 <= N <= 100000
1 <= Q <= 100000
Числа массива в промежутке [-100000, 100000]

http://www.spoj.pl/problems/GSS2/ - ссылка на саму задачу.

Пример:
Input:
9
4 -2 -2 3 -1 -4 2 2 -6
3
1 2
1 5
4 9

Output:
4
5
3
Комментарии:
1-ый запрос: подотрезок [1..1]
2-ой запрос: подотрезок [1..4]
3-ий запрос: подотрезок [4..4]

Заранее спасибо.

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

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

Автор dyussenaliyev, 13 лет назад, По-русски
Всем привет!

Уважаемые пользователи кодфорсес, мы - imslavko и я (dyussenaliyevрады пригласить вас на наше первое соревнование на algoprog.kz

Немного о соревновании:
Тип: ACM ICPC
Длительность: 3 часа
Количество задач: 5 (Задачи идут в порядке возрастания уровней сложности от 1-ой до 5-ой)
Начало: 14.05.2011 13:00 (время Московское)

Не судите строго, если что-то пойдёт не так. Всё-таки это наше первое соревнование.

Всем удачи на соревновании!

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

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

Автор dyussenaliyev, 13 лет назад, По-русски
Доброе время суток!
Как за О(1) выкинуть какую-то вершину из множества в СНМ-е?
Кто решил, скиньте код если можно.
Заранее спасибо!
Upd:
Итак, проблема решена. Всем спасибо!
Решение:
  • Каждую вершину i подвесить саму к себе
  • Для каждой вершины i создать фиктивную вершину i'
  • Подвесить каждую i' к i
  • Теперь, во всех операциях(union, get_set, move) использовать только фиктивные вершины
Почему нужно работать только с фиктивными вершинами?
Потому, что к ним никогда ничто не подвешивается, из-за чего нам не надо перевешивать все ссылки потомков, когда если бы делали без фиктивных вершин, надо было бы перевешивать, а это долго.
Думаю объяснил более-менее понятно.

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

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

Автор dyussenaliyev, 13 лет назад, По-русски
Копи-паст с lksh.ru:

Летняя компьютерная школа - 2011

Информация об ЛКШ-2011

В 2011 году ЛКШ пройдет в две смены - ЛКШ.июль и ЛКШ.август. Обе смены пройдут на базе отдыха "Берендеевы поляны" недалеко от города Судиславль Костромской области. Сроки смен:

  • ЛКШ.июль - с 10 по 30 июля.
  • ЛКШ.август - со 2 по 22 августа.

Предварительно стоимость участия в ЛКШ составит 27000 рублей. В данный момент оргкомитет рассматривает вопрос о возможности предоставления скидок на стоимость путевок в ЛКШ.август (только в эту смену) школьникам, нуждающимся в этом, и имеющим успехи на олимпиадах по программированию.

Стоимость путевки включает в себя питание, проживание, обучение, экскурсии и т.д. Проезд к месту проведения ЛКШ в стоимость не входит. Будет организован централизованный заезд из Москвы автобусами оргкомитета (отправление из Москвы в день заезда утром, возвращение в Москву в день отъезда вечером, стоимость проезда - ориентировочно 1000 рублей в одну сторону). Можно будет добраться до места проведения ЛКШ самостоятельно. Более подробная информация будет опубликована при публикации списков зачисленных.

Что такое ЛКШ

Летняя компьютерная школа проводится ежегодно начиная с 1999 года. Традиционно ЛКШ проводится на загородной базе отдыха, где собираются увлеченные своим делом преподаватели и школьники. ЛКШ - это место, где удается совмещать плодотворные занятия и активный отдых. Одна из главных особенностей ЛКШ - это атмосфера школы: почти все участники в ЛКШ приезжают прежде всего с целью учиться. Вторая отличительная особенность - это уровень школы: в ЛКШ приезжают сильнейшие школьники из разных регионов России и ближнего зарубежья (в частности, едва ли не целая группа в ЛКШ бывает составлена из победителей Всероссийской олимпиады по информатике и кандидатов в сборную России на международную олимпиаду), но не надо пугаться этого уровня - в ЛКШ есть и группы для знающих лишь основы языка программирования. Важным показателем является то, что школьники, однажды приехавшие в ЛКШ, обычно приезжают и на следующий год.

В ЛКШ изучают программирование, теорию алгоритмов и смежные разделы, т.н. computer science. Много внимания уделяется методам решения олимпиадных задач. Занятия ведут люди, которые были (или являются) участниками и призерами студенческих олимпиад по программированию, членами жюри различных олимпиад школьников по информатике, членами жюри и научного комитета Всероссийской олимпиады школьников по информатике, тренерами сборной России по информатике.

С прошлого года в ЛКШ открыто новое направление обучения: параллель "Компьютерной безопасности". В этом году появится еще одно новое направление: параллель "Промышленное программирование".

ЛКШ ориентирована на школьников, заканчивающих в этом учебном году 6-10 класс, от лишь недавно начавших изучать программирование (6-7 класс) до победителей олимпиад по информатике самого высокого уровня.

ЛКШ - это не только учеба. Очень популярны в ЛКШ спортивные игры (футбол, теннис, уже традицией стало проведение Турнира городов по волейболу). Также проводятся различные развлекательные мероприятия, интеллектуальные игры и т.д.

Общая информация

Из 21 дня школы учебными как правило являются 17 (неучебными являются дни заезда, отъезда, а также два выходных дня в течение смены). Учебная нагрузка - 4 часа в день. После обеда у школьников есть время для самостоятельной работы. Помимо этого учащимся предлагается большое количество спецкурсов.

В ЛКШ есть несколько учебных параллелей, в каждой параллели - по несколько учебных групп из 12-20 школьников. Как правило, с группой работают 2 преподавателя. Смотрите более подробную информацию об учебных параллелях.

Обучение в школе заканчивается сдачей зачета, что дает возможность лучше разобраться с материалом, который был пройден в течение школы, и продемонстрировать полученные знания. По результатам зачета школьники могут получить персональное приглашение в ЛКШ на следующий год. Кроме того, в течение школы проводятся одна или две олимпиады по программированию.

Как попасть в ЛКШ

Для того, чтобы попасть в ЛКШ, нужно:

  • Определиться с тем, в какую учебную параллель (параллели) вы планируете поступать, а также в какую смену вы хотите поехать в ЛКШ.
  • Заполнить анкету поступающего (заполняется в системе регистрации до 25 апреля)
  • Заполнить тематическую анкету (заполняется в системе регистрации до 25 апреля)
  • Выполнить вступительную работу (до 25 апреля)
  • Дождаться публикации списков зачисленных (ориентировочно - 15 мая)
  • Заполнить анкету зачисленного (будет опубликована одновременно со списками зачисленных)
  • Оплатить путевку (до 20 июня)
  • Купить билеты и заполнить анкету о приезде
  • Приехать в ЛКШ
Контакты

Официальный сайт ЛКШwww.lksh.ru

E-mail[email protected]

Контактные телефоны:

Контактные телефоны будут опубликованы позднее.

Группа ЛКШ ВКонтактеvkontakte.ru/club222235

Информация будет обновляться и дополняться.

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

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

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

Привет!

Сегодня в 18:40 (МСК) пройдет Сейчас идет командное соревнование Bitwise 2011. Ссылка

Призы:

1-ое место - 50,000 INR (1100 y.e.)

2-ое место - 30,000 INR (660 y.e.)

2-ое место - 20,000 INR (440 y.e.)

(два вторых места)

4-20-ые места - USB флэшки

Топ 50 команд получат поощрительные призы от Langoor.net

Всем удачи!

UPD1: Приношу всем свои извинения за неточную информацию о начале соревнования

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

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

Автор dyussenaliyev, 13 лет назад, По-русски
Объясните хотя бы пример
Спасибо.

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

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

Автор dyussenaliyev, 13 лет назад, По-русски
  • Проголосовать: нравится
  • -4
  • Проголосовать: не нравится

Автор dyussenaliyev, 13 лет назад, По-русски
  • Проголосовать: нравится
  • 0
  • Проголосовать: не нравится

Автор dyussenaliyev, 13 лет назад, По-русски
Дан массив а[1], a[2], ..., a[N]. ( |A[i]| ≤ 15007 , 1 ≤ N ≤ 50000 ).
Запрос определяется по паре чисел x, y:
Запрос(x,y) = Max { a[i]+a[i+1]+...+a[j] ; x ≤ i ≤ j ≤ y }
Даётся M запросов.

Решения за O(N*M) - TLE, нужно что-то побыстрей.

Заранее спасибо.

Upd: Проблема решена. Всем спасибо!

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

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

Автор dyussenaliyev, 13 лет назад, По-английски

Online Round 1
Online Round 1 consists of 3 sub-rounds, each lasting 3 hours. Competitors who advance to Online Round 1 can participate in any of the 3 sub-rounds, until they qualify to Online Round 2.

The first sub-round will start January 22, 2011 at 18:00 UTC (10:00 AM PST) and end January 22, 2011 at 21:00 UTC (1:00 PM PST).

The second sub-round will start January 25, 2011 at 21:00 UTC (1:00 PM PST) and end January 26, 2011 at 0:00 UTC (January 25, 2011 - 4:00 PM PST).

The third sub-round will start January 30, 2011 at 0:00 UTC (January 29, 2011 - 4:00 PM PST) and end January 30, 2011 at 3:00 UTC (January 29, 2011 - 7:00 PM PST).

Of those participating in Online Round 1, the top-scoring 1000 competitors from each of the 3 sub-rounds will advance to Online Round 2. Competitors who advance to Online Round 2 from a sub-round may not participate in later sub-rounds. Competitors who fail to advance from a sub-round may attempt to advance to Online Round 2 in later sub-rounds.

Online Round 2
February 5, 2011 at 21:00 UTC (1:00 PM PST) and end February 6, 2011 at 0:00 UTC (February 5, 2011 - 4:00 PM PST).

The 3,000 competitors will have three hours to solve the presented problem sets. The top-scoring 300 participants from Online Round 2 will receive an official Hacker Cup t-shirt. The top-scoring 25 competitors from Online Round 2 will be notified via email that they have advanced to the final round at Facebook.

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

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

Автор dyussenaliyev, 13 лет назад, По-русски
Сегодняшние контесты:

С 16:00 - 21:00 UTC+3 Личная олимпиада на neerc.ifmo.ru/school/io
C 17:00 - 20:00 UTC+3 COCI Contest #4 на hsin.hr/coci
C 18:00 - 21:00 UTC+3 Facebook Hacker Cup Online Round I, subround 1 на facebook.com/hackercup

Почему так? И чё писать?

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

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

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

Параметры:

Каждая из N точек становятся известны по одной точке за раз. После получения сведений об очередной точке строится выпуклая оболочка тех точек, о которых стало известно к настоящему моменту. Очевидно, можно было бы применять сканирование по Грэхему к каждой из точек, затратив при этом полное время, равное O(N^2*logN). Подскажите, как решить за О(N^2)?

Заранее спасибо.

Upd: Проблема решена. Всем спасибо!

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

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