IV OTWARTE MISTRZOSTWA OPOLA W PROGRAMOWANIU ZESPOŁOWYM

12
IV OTWARTE MISTRZOSTWA OPOLA W PROGRAMOWANIU ZESPOŁOWYM OMÓWIENIE ZADAŃ

description

IV OTWARTE MISTRZOSTWA OPOLA W PROGRAMOWANIU ZESPOŁOWYM. OMÓWIENIE ZADAŃ. Problem B – Wędrujący klocek. Cechy klocka: Pozycja Położenie, np. lewy, dolny róg Cechy trasy: Pola odwiedzone przez klocek Ruch: Cztery możliwości. Pozycja 1. Pozycja 2. Pozycja 3. - PowerPoint PPT Presentation

Transcript of IV OTWARTE MISTRZOSTWA OPOLA W PROGRAMOWANIU ZESPOŁOWYM

Page 1: IV OTWARTE MISTRZOSTWA OPOLA W PROGRAMOWANIU ZESPOŁOWYM

IV OTWARTE MISTRZOSTWA OPOLAW PROGRAMOWANIU ZESPOŁOWYM

OMÓWIENIE ZADAŃ

Page 2: IV OTWARTE MISTRZOSTWA OPOLA W PROGRAMOWANIU ZESPOŁOWYM

Problem B – Wędrujący klocek

Pozycja 2 Pozycja 3

3 pozycje x 4 kierunki = 12 wariantów

Cechy klocka:• Pozycja• Położenie, np. lewy, dolny róg

Cechy trasy:• Pola odwiedzone przez klocek

Ruch:• Cztery możliwości

Pozycja 1

Page 3: IV OTWARTE MISTRZOSTWA OPOLA W PROGRAMOWANIU ZESPOŁOWYM

Problem B – Wędrujący klocek

Pozycja 2 Pozycja 3Pozycja 1

Pozycja 1

Pozycja 2

Pozycja 3

W, x-=dl_klE, x++

N, y++

S, y-=dl_kl

N, y++

S, y- -W, x- -

E, x+=dl_kl

W, x- -

E, x++

S, y- -N, y+=dl_kl

Kolejny ruch:• Wyznacz nową pozycję• Wyznacz nowe położenie klocka• Dodaj zajmowane przez klocek pola do listy pól odwiedzonych

Ile razy najczęściej klocek znajdował się na jednym polu?Listę odwiedzonych pół przeszukujemy w czasie kwadratowym szukając współrzędnych, które występują najczęściej

Page 4: IV OTWARTE MISTRZOSTWA OPOLA W PROGRAMOWANIU ZESPOŁOWYM

Problem C – Zagnieżdżone podzbiory

Gramatyka bezkontekstowa definiująca zagnieżdżony zbiór liczb naturalnych:

Produkcje gramatykiL { E D ListaE N | L Element listyD , E D |} Rozwinięcie listyN NC | C Liczba naturalnaC 0 | 1 | 2 | … | 9 Cyfra

{1,2,{3,4,{5,6},7,8}} Przykładowe słowo realizowane przez gramatykę

A B C A(){ B()

C()}

A B | C

A(){ Jeżeli (Pierwszy symbol (B) = s1)

B()W przeciwnym wypadku jeżeli (Pierwszy symbol (C) = s2 )

C()W przeciwnym wypadku

Błędne słowo}

A s A(){ Jeżeli (symbol = s)

Czytaj kolejny symbolW przeciwnym wypadku

Błędne słowo}

Reguły konstrukcji parsera dla gramatyk bezkontekstowych:

Page 5: IV OTWARTE MISTRZOSTWA OPOLA W PROGRAMOWANIU ZESPOŁOWYM

Problem C – Zagnieżdżone podzbiory

Reguły realizacji parsera tej gramatyki – konstrukcja funkcji odpowiadających poszczególnym produkcjom

Lista() L { E D{ Jeżeli (symbol = { )

Czytaj kolejny symbolW przeciwnym razie

Błędne słowoElement_listy()Rozwinięcie_listy()

}

Element_listy() E N | L{ Jeżeli (symbol = { )

Lista()w przeciwnym razie jeżeli (Liczba naturalna)

Przeczytaj tę liczbęw przeciwnym razie

Błędne słowo}

Page 6: IV OTWARTE MISTRZOSTWA OPOLA W PROGRAMOWANIU ZESPOŁOWYM

Problem C – Zagnieżdżone podzbiory

Rozwinięcie_listy() D , E D |}{ Jeżeli (symbol = , )

Czytaj kolejny symbolElement_listy()Rozwinięcie_listy()

w przeciwnym razie jeżeli (symbol = } ) Czytaj kolejny symbol

w przeciwnym razie Błędne słowo

}

Analizuj_słowo(){ Czytaj pierwszy symbol

Lista()Jeżeli (przeczytane są wszystkie symbole)

Poprawne słowow przeciwnym razie

Błędne słowo}

Page 7: IV OTWARTE MISTRZOSTWA OPOLA W PROGRAMOWANIU ZESPOŁOWYM

Problem A – Terytorium

Niech AMN będzie tablicą, w której

1. Jeżeli działka na pozycji (i, j) jest wolna, to A[i, j] = maksymalna powierzchnia wolnego prostokąta o wysokości 1 i skrajnej prawej działce na pozycji (i, j).

2. Jeżeli działka na pozycji (i, j) jest zajęta, to A[i, j] = 0.

A =

210432121021010104321102100021032100021021

Mając tablicę A łatwo możemy wyznaczyć maksymalny wolny obszar prostokątny o narożniku na pozycji (i, j).

Wszystko można robić równocześnie z wczytywaniem danych .

Złożoność O(M2N). Jest możliwa optymalizacja ze względu na kolejność M i N.

Page 8: IV OTWARTE MISTRZOSTWA OPOLA W PROGRAMOWANIU ZESPOŁOWYM

Problem D – Cięcie kwadratu

A(0,0) B(N,0)

C(N,N)D(0,N)

E(N,yE)

F(xF,N)AE = [N; yE] ; EF = [xF – N; N – yE]

AE EF N(xF – N) + yE(N – yE) = 0

skąd:

xF = N – yE + yE2/N

i zadanie już nie jest geometryczne.

Szukamy odpowiedzi na pytanie: dla jakich całkowitych i (1 ≤ i ≤ N – 1) wyrażenie i2/N jest całkowite?

mkm

kk pppN 2121

rpppimk

m

kk

222

21

21

Jeżeli N ma następujący rozkład na czynniki pierwsze:

to i musi być postaci:

Odpowiedzią jest

8(r – 1)

Page 9: IV OTWARTE MISTRZOSTWA OPOLA W PROGRAMOWANIU ZESPOŁOWYM

Problem E – Wielokąty kratowe

Z twierdzenia Picka : W = P – B/2 +1

Wystarczy obliczyć:

a) pole P wielokąta

b) liczbę B punktów kratowych na brzegu wielokąta

1

0112

1n

iiiii yxyxP

1

011 ,

n

iiiii yyxxNWDB

Uwaga! Wartości iloczynów xiyi+1 lub xi+1yi mogą przekraczać zakres typu long.

Page 10: IV OTWARTE MISTRZOSTWA OPOLA W PROGRAMOWANIU ZESPOŁOWYM

Problem F – Jak dojechać?

Szukamy takiego v aby:

(av4 + bv3 + cv2 + dv) * (s / v) = m

tzn. szukamy miejsca zerowego funkcji

f(v) = s(av3 + bv2 + cv + d) – m

Można zastosować dowolną metodę, np.

a) bisekcji;

b) Newtona.

Page 11: IV OTWARTE MISTRZOSTWA OPOLA W PROGRAMOWANIU ZESPOŁOWYM

Problem G – Nieuczciwa gra

Załóżmy, że A1 < A2 < A3 oraz B1 < B2

Tylko poniższe przypadki pozwalają zawsze wygrać:

1. A1 < A2 < A3 < B1 < B2 - trzecią kartą może być najniższa spośród pozostałych w talii

2. A1 < B1 < A2 < A3 < B2 - wybieramy najniższą większą od A3 (nie istnieje, gdy A3=51)

3. B1 < A1 < A2 < A3 < B2 - jw.

4. A1 < A2 < B1 < A3 < B2 - wybieramy najniższą większą od A2 (nie istnieje, gdy A2=49)

5. A1 < A2 < B1 < B2 < A3 - jw.

Page 12: IV OTWARTE MISTRZOSTWA OPOLA W PROGRAMOWANIU ZESPOŁOWYM

Problem H – Krecia robota

Jeśli kopczyki są wierzchołkami grafu, a tunele je łączące – krawędziami, to taki grafjest drzewem.

Wniosek: najkrótsza droga jest jedyną drogą łączącą dowolne dwa wierzchołki.

Kopczyk poprzedzający nowoutworzony kopczyk możemy nazwać jego rodzicem.

Zadanie sprowadza się do znalezienia wspólnego przodka wierzchołków S i T.

Sposób numerowania wierzchołków (w grafie skierowanym odpowiada to posortowaniu topologicznemu) pozwala na prosty zapis algorytmu, którego główna część ma postać:

if(A[S]<A[T]) {dist+=L[T]; T=A[T]; }else {dist+=L[S]; S=A[S]; }

Złożoność O(m) , gdzie m – liczba krawędzi. 0

12

4

3

5

8

2

3

9

7