Сайт підготовки до олімпіади з інформатики

програмування в С++

Школа олімпійського резерву з інформатики
Що таке олімпіадна інформатика? PDF Печать E-mail
Добавил(а) Administrator   
03.10.12 08:35

1. Що таке олімпіадна інформатика?

 

Що потрібне для успішної участі в олімпіадах по інформатиці? Як показує практика, тільки знання мови програмування для цього явно не достатньо. Взагалі, виявляється, що олімпіадні задачі по інформатиці лежать десь на стику математики і програмування. І дуже часто виявляється, що розв'язуючи задачі школярі не тільки вчаться програмувати, але і освоюють нові розділи математики.

Для успішної участі в олімпіаді по програмуванню школяр повинен не тільки володіти мовою програмування, але і уміти придумувати і реалізовувати алгоритми розв'язку задач, оцінювати час їх роботи, тестувати і налаштовувати свої програми.

Перші олімпіади 1934 рік. Олімпіади з інформатики насправді дуже відрізняються від олімпіад з інших предметів:

-                             По-перше, всі учасники (і 8, і 11 класи) розв'язують одні і ті ж задачі (як правило - 3-4)

-                             По-друге, журі ніколи не дивиться тексти програм. існує певний набір тестів, за якими і перевіряють кожну задачу даного учасника. Правильний результат оцінюється в певне число балів. Виходячи з суми балів учасника і визначається результат.

Якщо з вивченням мови програмування у вас не повинно виникнути складнощів (величезна кількість книг по цій темі), то ось з алгоритмами доведеться складніше. Книг по цій темі теж немало, але вони, частіше всього, дуже переобтяжені теорією, а на олімпіадах потрібна тільки практика. З електронних джерел по алгоритмах можу порадити книгу С.М.Окулова і сайт algolist.manual.ru , який менш націлений на вивчення "олімпіадної інформатики", ніж книга Окулова, але містить велику кількість алгоритмів, яких немає в книзі, але які було непогано б знати.

 

Звикайте працювати в  нових 32-бітових компіляторах, що  не мають жорсткого обмеження в пам'яті і працюють істотно швидше.

 

Працюйте в он-лайн системах, які автоматично перевіряють та тестують Ваші розв'язки:

 

http://olymp.sumdu.edu.ua - Веб-ресурс підтримки та проведення шкільних та студентських олімпіад з інформатики

http://www.e-olimp.com.ua/Інтернет-портал організаційно-методичного забезпечення дистанційних олімпіад з програмування для обдарованої молоді навчальних закладів України

http://www.olymp.vinnica.ua/ - Центр підтримки та проведення олімпіад школярів з використанням можливостей Internet.

 
23_01_2013 Теорія графів PDF Печать E-mail
Добавил(а) Гісь Ігор Володимирович   
23.01.13 12:56

Теорія графів

До структурованих типів даних, в яких є певні особливості в доступу до даних і методів їх обробки відносять:

- список;

- зв’язаний список;

- стек;

- черга;

- дерево;

- граф.

1. Основи теорії графів

Введемо деякі основні поняття, що стосуються теорії графів..............

скачати файл


Последнее обновление 23.01.13 13:45
 
2 тур Волинська учнівська Інтернет-олімпіада з програмування PDF Печать E-mail
Добавил(а) Administrator   
13.11.13 11:48

2 тур - з 11.11 по 17.11.2013

точка входу для відправлення розв'язків http://93.171.173.139/cgi-bin/new-client?contest_id=17

Задача 1. За сірниками (20 балів)

Ім'я вхідного файлу: money.dat Ім'я вихідного файлу: money.ans Програма: money.*

Ліміт часу: 1 секунда

Василько записався на гурток технічної творчості «Умілі ручки». На гуртку йому показали, як будувати сірникові будиночки. Але для побудови йому необхідно придбати сірники.

Пачки сірників продаються в трьох різних видах упаковок. Упаковка зі 100 пачок коштує 1 грн., з 20 пачок – 30 коп., а одна окрема пачка коштує 2 коп.

Василько обмежений в коштах, підрахуйте яка мінімальна сума має бути у Василька, щоб купити N пачок сірників.

Технічні умови

   Вхідні дані

   Кількість N пачок, які потрібно купити. N ≤ 1000.

   Вихідні дані.

   Мінімальна сума, потрібна для покупки, в гривнях.

Приклад

money.dat

123

money.ans

1.36

Розв’язок

a=n/100;

n=n%100;

b=n/20;

n=n%20;

c=n%20;

r=(a*100+b*30+c*2)/100;

a=n/100;

n=n%100;

b=n/20;

n=n%20;

c=n%20;

if(b>3){b=0;c=0;a=a+1;}

if(c>15){c=0;b=b+1;}

r=double(a*100+b*30+c*2)/100.0;

cout.precision(2);

cout<< fixed<<r<<endl;

Задача 2. Сірники (100 балів)

Ім'я вхідного файлу: match.dat Ім'я вихідного файлу: match.ans Програма: match.*

Ліміт часу: 1 секунда

   Василько для побудови сірникових будиночків, почав розкладати сірники на столі. Йому стало цікаво, яка мінімальна кількість сірників потрібна для того, щоб викласти на площині N  квадратів зі стороною в один сірник? Сірники він не ламав та не клав один на одного, вершинами квадратів були точки, де сходились кінці сірників.

   Поможіть Васильку підрахувати мінімальну кількість сірників, для побудови квадратів N.

Технічні умови

   Вхідні дані

   Єдиний рядок вхідного файлу містить одне ціле число N (1 ≤ N ≤ 109).

   Вихідні дані

   Одне число, мінімальна кількість сірників.

Приклад

match.dat

4

match.ans

12

Розв’язок

a=sqrt(double(n));

r=2*a*(a+1);

a=sqrt(double(n));

b=n-(a*a);

if (b==0)r=2*a*(a+1);else

r=2*a*(a+1)+b*2+((b-1)/a+1);

 
Сортування часу PDF Печать E-mail
Добавил(а) Administrator   
18.09.13 00:00

http://www.e-olimp.com/ua/problems/972

Сортування часу

Відсортуйте час згідно заданому критерію.


Технічні умови

Вхідні дані

У вхідному файлі записано спочатку число N (1 ≤ N ≤ 100), а потім N моментів часу. Кожен момент часу задається 3 цілими числами - години (від 0 до 23), хвилини (від 0 до 60) і секунди (від 0 до 60).

Вихідні дані

У вихідний файл виведіть моменти часу, упорядковані в порядку неспадання (момент часу також виводиться у вигляді трьох чисел, ведучі нулі виводити не потрібно).


Інформація про задачу

Ліміт часу: 1 секунда
Ліміт пам`яті: 64 MB
Бали за пройдений тест: 1.96078
Складність: 8% 214/232
Класифікація: Сортування та послідовності

Приклад

Приклад вхідних даних

4
10 20 30
7 30 00
23 59 59
13 30 30

Приклад вихідних даних

7 30 0
10 20 30
13 30 30
23 59 59
 
5. Готуємось до олімпіади з інформатики PDF Печать E-mail
Добавил(а) Administrator   
28.01.15 09:19

http://ejudge.ippo.dn.ua/cgi-bin/new-register?contest_id=59

8-9 класи

1. Сторінки. Сторінки в книгах як правило нумеруються натуральними числами 1, 2, 3, ... так що одна сторона Першого аркуша має номер 1, зворотна сторона того ж листа - номер 2. Сторінки іншого листа пронумеровані числами 3 і 4 відповідно, и т.д. Ваше Завдання - за заданими двома сторінками визначити  чи належать одному і  тому ж аркушу бо різнім.

У єдиному рядку задаються два натуральних числа а і b, що НЕ перевищують 109.

Виведіть "Yes", якщо Сторінки а i b розташовані на одному Аркуші, і "No",якщо на різних.

введення

виведення

5 6

Yes

31 13

2. Гра. Вітя і Льоня грають в гру. Спочатку кожен записує на аркуші паперу число від 1 до 6 - прогноз, а потім вони кидають гральну кістку, грані якої пронумеровані числами від 1 до 6. Результат гри визначається тим наскільки близько випало на кістки число до того, яке записано гравцем на аркуші . Чий прогноз виявиться ближче до результату кидка, той і вважається переможцем. Потрібно написати програму для виявлення переможця.

У єдиному рядку задаються три числа - прогноз Віті, прогноз Пені та результат кидка кістки. Всі числа цілі і знаходяться в діапазоні від 1 до 6.

Виведіть "W", якщо перемогу слід присудити Віті, або "L", якщо переможцем є Льоня, або ж "D", якщо результат гри нічийний (тобто обидва прогнози виявилися однаково близькі до результату кидка).

   

введення

виведення

3

4

5

L

1

6

2

W

4

4

3

D

З. Наперстки. Гра в наперстки проходить наступним чином. у ведучого є три однакових непрозорих наперстка, які він вибудовує в ряд і під один з них ховає маленький кульку. Після цього ведучий швидко змінює наперстки місцями, а в кінці гравцеві пропонується вгадати, під яким із наперстків знаходиться кулька. Гравець бачив, куди спочатку клав кулька ведучий, і пам'ятає всі його дії. Тепер він просить допомогти вас допомогти дати йому відповідь - де знаходиться кулька.

У першому рядку задаються два цілих числа s і N (1 ≤ s <3, 0 <N <100), які позначають відповідно початкову позицію в ряду наперстка, під який був покладений кулька ведучим, і кількість обмінів, які він зробив. У кожному з наступних N рядків задаються по два цілих

числа а і b (1 ≤ а, b ≤ 3, а ≠ b) - номери позицій, наперстки з яких ведучий міняв місцями на відповідному кроці.

Виведіть одне число - позицію наперстка, який повинен вибрати гравець, щоб виграти.

введення

виведення

13

3

12

 

13

 

32

 

4. Арифметичний коник. На довгій лінійці сидить коник. Спочатку коник знаходиться на позначці х. Після цього він робить стрибок і потрапляє на позначку у. Далі він продовжує стрибати в ту ж сторону, все його стрибки мають одну і ту ж довжину. Потрібно визначити, чи зможе він потрапити на позначку z.

У єдиному рядку задаються три цілих числа х, у, z (-109 <х, у, z <109).

Виведіть "Yes", якщо коник побуває в якийсь момент на позначці z, і "No" в іншому випадку.

введення

виведення

1 2 5

Yes

136

5. Дружні брати. Є три брата, відомо скільки у кожного з них цукерок. Два брата посваряться, якщо число цукерок у них відрізняється більш, ніж на К. Вони можуть дарувати один одному цукерки. Потрібно визначити мінімальне число цукерок, яке вони повинні подарувати один одному, щоб не посваритися.

  У єдиному рядку задається чотири невід'ємних цілих числа а1, а2, а3, К, що не перевищують 109, де а - кількість цукерок, яке спочатку було у г-го брата.

Виведіть одне число - мінімальну кількість цукерок, яке брати повинні подарувати один одному, щоб ніхто не посварився. Якщо це неможливо, виведіть одне число -1.

       

введення

 

виведення

1

6

3

2

 

2

 


10-11 класи

1. Приготування яєць. Петя любить їсти варені яйця. Для того, щоб приготувати яйце некруто потрібно варити його Х хвилин. Щоб приготувати яйце круто, потрібно спочатку приготувати його некруто, а потім варити ще Y хвилин. Петя любить їсти яйце, коли воно наполовину приготовлено круто, тобто коли яйце спочатку приготовлено некруто, а потім ще пройшла половина часу, необхідного для того, щоб це яйце стало приготованим круто. Знайдіть скільки хвилин Петі потрібно варити яйце.

У єдиному рядку задаються два цілих числа Х і У (1 ≤ Х, У <1018).

Виведіть одне число - час у хвилинах, необхідне для приготування наполовину крутого яйця.

 

введення

 

виведення

10 11

 

15.5

 

2. Годинник. Є свідчення N годин. Відомо, що До з них показують неправильний час, показання інших - вірні. Потрібно написати програму для визначення точного часу.

У першому рядку задається два цілих числа N і К (0 <К GNG 1000). У кожному з наступних N рядків задаються по два числа - кількість годин (від 0 до 23) і хвилин (від 0 до 59), які показують відповідні години.

Виведіть два числа, що визначають правильний час у годинах і хвилинах. Якщо неможливе можна однозначно визначити точний час, виведіть одне число -1.

введення

виведення

53

1320

13 20

 

20 13

 

9 00

 

13 20

 

13 21

 

З. Транспортна задача. У країні Інформландія є всього два види міського транспорту: метро і автобус. Грошова одиниця в Інформландіі - природно, біт. Одна поїздка на метро коштує 3 біта, а на автобусі - 2 біти. При цьому можна купити місячний проїзний на необмежену кількість поїздок: на метро - 40 бітів, на автобус - 30 бітів, на автобус і метро - 60 бітів. Яку найменшу суму потрібно витратити на проїзд у місяць жителю Інформландіі, якщо в тому місяці належить зробити х поїздок на метро і у на автобусі.

У єдиному рядку задаються два цілих числа х і у (0 <х, у <100).

Виведіть найменшу суму в бітах, яка буде потрібно жителю на проїзд.

 

введення

 

виведення

930

 

57

 

4. Морозиво. Є N морозив. Дитина з'їдає будь морозиво за 1 хвилину. Для кожного морозива відомо, через скільки хвилин воно розтане. Потрібно визначити мінімальну кількість дітей, які можуть з'їсти ці всі ці морозива так, щоб ні одне з них не встигло розтанути. Кожну хвилину одна дитина може їсти лише одне морозиво, і кожне морозиво може їсти лише одна дитина.

У першому рядку задано ціле число N (1 ≤N ≤ 105). Другий рядок містить N натуральних чисел, що не перевищують 106, кожне з яких визначає час, через який розтане відповідне морозиво.

Виведіть одне число - мінімальну кількість дітей, які зможуть з'їсти все морожені, не допустивши їх танення.

     

введення

виведення

4

     

2

1

2

3

2

 

5. Ліфт. У будівлі з N поверхами поставили новий ліфт, який необхідно перевірити ліфтерові. За посадової інструкції перевірка працездатності ліфта полягає в тому, щоб зробити принаймні по одному разу поїздки між кожною парою різних поверхів (при цьому поїздки від одного поверху до іншого і у зворотний бік вважаються різними). Спочатку ліфт знаходиться на першому поверсі. Далі ліфтер послідовно натискає кнопки на панелі ліфта, переміщаючи ліфт на відповідні кнопкам поверхи. Працівник хоче впоратися з перевіркою якомога швидше, тому просить вас написати програму для знаходження послідовності натискань на кнопки мінімальної довжини.

У єдиному рядку задано ціле число N (1≤N≤1000).

Виведіть послідовність натискань для повної перевірки працездатності ліфта мінімальної довжини. Якщо існує декілька послідовностей, що задовольняють умові, виведіть будь-яку з них.

 

введення

       

виведення

3

 

3

2

3

1

2 1

 

Зауваження. При виконанні наведеної в прикладі послідовності натискань ліфт здійснить такі поїздки: {(1 - + 3), (3 - + 2), (2 - + 3), (3 - + 1), (1 - + 2), (2 - + 1)}, що є достатнім для перевірки, оскільки містить в собі всі можливі поїздки.

 


Страница 17 из 43

Статистика

Пользователей : 269
Статей : 225
Просмотрено статей : 127904

Вход/Регистрация

Нет