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

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

Школа олімпійського резерву з інформатики
Дерево PDF Печать E-mail
Добавил(а) Administrator   
15.01.16 21:05

Теорія графів
Дерево?
Неорієнтовний граф без петель та кратних ребер задано матрицею суміжності. Визначити, чи є цей граф деревом.
Вхідні дані
Перший рядок містить кількість вершин графа n (1 ≤ n ≤ 100). Далі записана матриця суміжності розміром n×n, у якій 1 позначає наявність ребра, 0 - його відсутність. Матриця симетрична відносно головної діагоналі.
Вихідні дані
Виведіть повідомлення YES, якщо граф є деревом, і NO у протилежному випадку.

Вхідні дані
3
0 1 0
1 0 1
0 1 0
Вихідні дані
YES


http://www.e-olymp.com/uk/problems/977

Остове дерево мінімальної ваги
Король країни Аріїв завоював N міст на території сусідніх держав. Тепер йому необхідно створити систему збирання мита з завойованих територій. Він хоче збудувати таку систему шляхів між цими містами, щоб до будь-якого міста можна було дістатися (можливо, через інші міста) зі столиці, але у воєнному стані на транспорт виділяється дуже незначна частина фінансів, тому сумарна вартість побудованих шляхів сполучення між містами має бути мінімальною.
Input format
Перший рядок вхідного файлу містить натуральне число N (1≤N≤100) – кількість міст у країні, а також цілі числа X та Y – координати столиці. Наступні N рядків містять через проміжок координати Xi , Yi завойованих міст. Значення координат по модулю менші 50000.
Output format
Єдиний рядок має містити дійсне число з трьома знаками після коми – сумарну вартість побудованих доріг. Вважайте, що вартість одиниці довжини дороги дорівнює одній умовній одиниці.
Examples

Input in input.txt Output in output.txt
6 0 0
1 1
-1 1
0 2
1 -1
-1 -1
0 -2 8.485

http://134.249.159.199/cgi-bin/new-client?contest_id=24 Задача I

Задачі
AДерево? - http://www.e-olymp.com/uk/problems/977
BОтримай дерево - http://www.e-olymp.com/uk/problems/978
CСума - http://www.e-olymp.com/uk/problems/2157
DПеревірка на неорієнтовність - http://www.e-olymp.com/uk/problems/2470
EВід матриці суміжності до списку ребер - http://www.e-olymp.com/uk/problems/2471
FОперації на графі http://www.e-olymp.com/uk/problems/2472
GДерево - http://www.e-olymp.com/uk/problems/2923
HВід матриці суміжності до списків суміжності - http://www.e-olymp.com/uk/problems/3981
IПоверни мене! - http://www.e-olymp.com/uk/problems/4854

 
Заняття 14 (07.12.2016) PDF Печать E-mail
Добавил(а) Administrator   
13.12.16 23:32

Олімпіадні задачі

http://134.249.159.199/cgi-bin/new-client?contest_id=11

Логін school2016-1 . . . school2016-10  (пароль - 1)

1  - Неуважність

Степан вдало пройшов співбесіду і ось уже як чотири місяці працює на одній із самих престижних ІТ компаній. Прийшов час здавати проект менеджеру і Степан, як істинний студент, все виконує у останню ніч перед здачею. Набирає текст Степан звичайно дуже швидко, але неуважно. От і цього разу останню частину тексту він набрав не звернувши уваги, що випадково натиснув клавішу caps lock. Таким чином великі букви були набрані маленькими, а маленькі великими. Інші символи він набрав вірно. Степан настільки стомився, що немає сил виправити помилки, і він вирішив кілька годин поспати. Допоможіть Степану, доки він спить, напишіть програму, яка виправляє неуважно набраний текст.

Формат вхідних даних: перший рядок вхідного файлу містить неуважно набраний Степаном текст, який містить не більше 500 символів.

Формат вихідних даних: вихідний файл має містити виправлений текст.

Вхідні дані розміщені у файліtext.in

Результат роботи знаходиться у файліtext.out

sCHOOL
School
 
Задача Island PDF Печать E-mail
Добавил(а) Гісь   
18.11.10 13:59
Задача Island Алгоритм

Якось на Багатокутію напали Трикутники. Королівство Багатокутія лежить на острові і займає всю його територію. Острів має вигляд опуклого багатокутника (такого багатокутника, у якого кожен внутрішній кут менший від 180°). У Багатокутії знаходиться певне число фабрик програмного забезпечення. Кожна фабрика приносить певні постійні прибутки або збитки.

Трикутники вирішили заволодіти частиною площі Багатокутії, яка має наступні властивості:

має вигляд трикутника, вершинами якого є три різні вершини багатокутника-острова;

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

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

Король Багатокутії вирішив порахувати, наскільки великі збитки для економіки країни може принести нашестя Трикутників. Допоможіть йому і напишіть програму, яка визначає суму прибутків (збитків), що дають фабрики, якими хочуть заволодіти Трикутники.

Формат вхідних даних

Перший рядок вхідного файлу містить одне ціле число n (3<=n<=600), число вершин багатокутника-острова.

В наступних n рядках записано по два цілих числа xj та yj - координати вершин багатокутника-острова у порядку його обходу за годинниковою стрілкою (-10000<= xj,yj<=10000), відокремлених одним пробілом.

В (n+2)-му рядку міститься одне ціле число m – число фабрик (1<=m<=10000), що розташовані на острові.

В наступних m рядках міститься по три цілих числа: x'i, y'i і wi (-10000<=x'i, y'i<=10000, -100000<=wi=0) або збиток (для wi<0), який фабрика приносить. Кожна фабрика лежить на острові-багатокутнику, тобто всередині його або на його границі (березі). Декілька фабрик можуть лежати в одному і тому ж місці, тобто мати ті самі координати.

Формат вихідних даних

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

Приклад

Island.DAT

Island.SOL

5

4 1

1 4

8 9

11 5

8 1

4

7 2 3

6 3 -1

4 5 3

9 6 -4

5

 

 

1. Перебрати всі трикутники опуклого многкутника

(три вкладених цикли

i=1..n-2

j=i+1 .. n-1

k=j+1.. n

для чотирикутника 1,2,3; 1,2,4; 1,3,4; 2,3,4)

2. Перевірити належність точок трикутнику перебравши всі точки

(перевірити можна за площою трикутників: якщо точка лежить в трикутнику то сума площ трьох трикутників утворених з даною точкою та вершинами тркутника рівна площі трикутника)

Формула площі трикутника за кординатами вершин:

S=1/2*|x1*y2-x2*y1+ x2*y3-x3*y2+ x3*y1-x1*y3|

 

 
Заняття 5 (04.10.2017) PDF Печать E-mail
Добавил(а) Administrator   
13.10.17 10:23

 Codeforces  (http://codeforces.com/)

http://codeforces.com/problemset/problem/550/A

Два підрядка

Дано рядок s. Потрібно визначити, чи існують в цьому рядку s два  підрядка, які не перетинаються "AB" і "BA" (ланцюжків можуть йти в будь-якому порядку).

Вхідні дані

На вхід подається рядок s довжиною від 1 до 105 символів, що складається з великих літер латинського алфавіту.

Вихідні дані

Виведіть "YES" (без лапок), якщо рядок s містить дві непересічні підрядка "AB" і "BA", і "NO" інакше

Готуємось до олімпіади з інформатики 2017-2018- 2

1.     Фрагменти програмних кодів (С++)

Завдання

Програмний код

$11.               

Зчитування до кінця рядка

while (cin.peek()!='\n')

 { n++;

cin>>a[n];

 }

$12.               

Зчитування до кінця файлу

while (!cin.eof())

 { m++;

cin>>b[m];

 }

$13.               

Зчитування рядка з пропусками

string str;

getline(cin,str,'\n');

$14.               

Зчитування рядка з пропусками (тип string)

#include "fstream"

#include "string.h"

#include "string"

using namespace std;

ifstream cin("input.txt");

ofstream cout("output.txt");

int main()

{string s;

getline(cin,s);

cout<<s;

}

$15.               

Зчитування рядка з пропусками (тип char)

#include "fstream"

#include "string.h"

using namespace std;

ifstream cin("input.txt");

ofstream cout("output.txt");

int main()

{char str[100];

cin.getline(str,sizeof(str));

cout<<str;

}

$16.               

Кількість цифр в числі

#include "string"

int main()

{string s;

cin>>s;

cout<<s.length();}

 

#include "iostream"

#include "math.h"

using namespace std;

int main()

{

unsigned long long number;

cin>>number;

cout.precision(0);

cout<<fixed<<log10(double (number))+1;

}

 

2.    Функції для роботи з рядками

Більшість функцій для роботи з рядками містяться в бібліотеці cstring .(#include <cstring>)

Функція

Дія

memset(str, c, n)

перші n символів рядка str заповнює значеннями c

strnset(str, c, n)

перші n символів рядка str заповнює значеннями c

strlen(str)

визначення довжини рядка

strcpy(str1, str2)

в рядок str1 копіює рядок str2

strncpy(str1, str2, n)

в рядок str1 копіює не більше, ніж n символів рядка str2

strcat(str1, str2);

до рядка str1 дописує рядок str2

strncat(str1, str2, n)

до рядка str1 дописує не більше, ніж n символів рядка str2

strchr(str, c)

визначає перше входження літери c  в рядок str; повертає вказівник на знайдену літеру (або NULL, якщо її нема)

strrchr(str, c)

визначає останнє входження літери c  в рядок str; повертає вказівник на знайдену літеру (або NULL, якщо її нема)

strstr(str1, str2)

визначає перше входження підрядка str2 в рядок str1; повертає вказівник на першу літеру знайденого підрядка (або NULL, якщо він не зустрічається)

strrev(str)

записує рядок str у зворотному порядку

strupr(str)

перетворює всі літери рядка у великі літери

strlwr(str)

перетворює всі літери рядка у малі літери

strcmp(str1, str2)

порівнює рядки str1 та str2; якщо рядки рівні, то повертає 0;

якщо відмінні – то повертає різницю між першими відмінними літерами: с1 – с2

stricmp(str1, str2)

аналогічна до strcmp(...), тільки ігнорує величину літер

strcspn(str1,str2)

повертає число – позицію першого входження в рядок str1 символу  із набору str2

strdup(str1)

розподіляє пам’ять і копіює рядок str1 за виділеною адресою; повертає адресу початку виділеної пам’яті

Приклади:

strcmp("abcdefgh","abcabc") = 3;

stricmp("Abcd","abcD")       = 0;

strlen("alpha")                    = 5;

cout<<strchr("University", 'v')          –>  "versity";

cout<<strstr("MicroLab Studio", "Lab")   –> "Lab Studio";

cout<<strupr("My first Program")               –> "MY FIRST PROGRAM".

 

Робота з масивами

Операція з масивом

Лінійний масив

Прямокутна таблиця

Опис

int a[100];

int i, n;//індекс, кількість елементів

int a[100][100];

int i,j, n,m;//індекс, кількість елементів

Введення

cin>>n;

for(i=0;i<n;i++)cin>>a[i];

cin>>n>>m;

for(i=0;i<n;i++)

for(j=0;j<m;j++)

cin>>a[i][j];

Виведення

for(i=0;i<n;i++)cout<<a[i]<<” “;

for(i=0;i<n;i++)

for(j=0;j<m;j++)

cout<<a[i][j]<<” “;

Сумування

s=0;

for(i=0;i<n;i++)s=s+a[i];

s=0;

for(i=0;i<n;i++)

for(j=0;j<m;j++)

s=s+a[i][j];

Пошук

cin>>k;

for(i=0;i<n;i++) if (a[i]==k) cin<<i;

cin>>k;

for(i=0;i<n;i++)

for(j=0;j<m;j++)

if (a[i][j]==k)

cin<<i<<” “<<j;

Пошук максимального

max=a[0];nmax=0;

for(i=1;i<n;i++)if  (a[i]>max) {max=a[i];nmax=i;}

max=a[0][0];imax=1;jmax=1;

for(i=0;i<n;i++)

for(j=0;j<m;j++)

if  (a[i][j]>max) {max=a[i][j];

imax=i;jmax=j;}

Сортування

for(i=0;i<n-1;i++)

for(j=0;j<n-1;j++)

if  (a[j]>a[j+1])

{temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;}

 

Стирання

n=n-1;

for(i=k-1;i<n;i++)

a[i]=a[i+1];

 

Вставка

n=n+1;

for(i=n-1;i>k;i--)

a[i]=a[i-1];

a[k]=x;

 
 
Інформаційний лист PDF Печать E-mail
Добавил(а) Administrator   
07.09.11 12:24

На виконання рішення обласної ради шостого скликання від 28.12.2010 р. №2/38 «Про внесення змін до обласної цільової Програми роботи з обдарованою молоддю на 2007-2010 роки» та з метою пошуку обдарованих дітей, підготовки їх до участі у Всеукраїнській олімпіаді з інформатики залучити учнів, переможців ІІІ етапу Всеукраїнської олімпіади з інформатики для навчання в школі обдарованих дітей з інформатики та додатково в школі обдарованих дітей з математики.

Заняття з інформатики проводяться в середу та п’ятницю з 15.00 до 17.00 в лабораторії інформатики Волинського ІППО і заочно на сайті http://schoololymp.byethost32.com.

Додаткову інформацію про роботу школи можна отримати в методиста лабораторії інформатики Гіся Ігоря Володимировича (контактний телефон (0332) 242225, моб.0509163106, кабінет №24 ВІППО).

Последнее обновление 07.09.11 13:06
 


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

Статистика

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

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

Нет