Autostradowe opłaty. Szczegóły implementacyjne. highway

Podobne dokumenty
Rozpoznawanie obrazu. Teraz opiszemy jak działa robot.

W Brisbane grasują wielkie zmutowane wombaty. Pomóż ocalić ludzi od tej plagi torbaczy.

4. Funkcje. Przykłady

Matematyczne Podstawy Informatyki

Wydział Matematyki I Informatyki ul. Słoneczna Olsztyn

Złożoność informacyjna Kołmogorowa. Paweł Parys

USTAWY: ROZPORZĄDZENIA:

Instrukcje dla zawodników

International Olympiad in Informatics 2013

Egzamin z Podstaw informatyki i programowania 2007/2008

Hash jest strukturą danych, która przechowuje pary oraz umożliwia dostęp do wartości poprzez podanie klucza.

PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI 2016 ROK

#include <iostream> using namespace std; void ela(int); int main( ); { Funkcja 3. return 0; }

International Olympiad in Informatics July 2011, Pattaya City, Thailand Competition Tasks Day 2 Polish 1.3.

I. Podstawy języka C powtórka

Zadanie: FIL Ścieżki. Wejście. polish. BOI 2015, dzień 2. Dostępna pamięć: 256 MB

Nazwa kwalifikacji: Tworzenie aplikacji internetowych i baz danych oraz administrowanie bazami Oznaczenie kwalifikacji: E.14 Numer zadania: 01

Nazwa kwalifikacji: Tworzenie aplikacji internetowych i baz danych oraz administrowanie bazami Oznaczenie kwalifikacji: E.14 Numer zadania: 02

Programowanie - wykład 4

EGZAMIN POTWIERDZAJĄCY KWALIFIKACJE W ZAWODZIE Rok 2016 CZĘŚĆ PRAKTYCZNA

Laboratorium nr 10. Temat: Funkcje cz.2.

- wszystkie elementy - wszystkie elementy

Narzędzie konfiguracji rozruchu

Obliczanie opłaty elektronicznej za przejazd wybraną trasą (krok po kroku)

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

1 Automaty niedeterministyczne

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

Regulamin Usługi Promocyjnej Pakiet minut do wszystkich dla Oferty FORMUŁA MIX obowiązuje od 5 kwietnia do odwołania.

4. Droga w przekroju poprzecznym

Chińskie, japońskie znaki

EGZAMIN MATURALNY Z INFORMATYKI WYBRANE: ... (system operacyjny) ... (program użytkowy) ... (środowisko programistyczne)

10. Elementy kombinatoryki geometrycznej: suma kątów wielokąta,

Zestaw dodatkowych raportów nr II do programu MenedŜer Pojazdów PL+ Instrukcja Obsługi SoftwareProjekt 2008

Zadanie 1. Suma silni (11 pkt)

Gra TransEdu - instrukcja

OBLICZENIA I STATYSTYKA FORMUŁY I FUNKCJE

KREDYTY JAK PRZEPROWADZIĆ ROZLICZENIE WARUNKU UMOWNEGO

Programowanie w języku C++ Agnieszka Nowak Brzezińska Laboratorium nr 2


CENNIK OPŁAT ZA KORZYSTANIE Z INFRASTRUKTURY KOLEJOWEJ O SZEROKOŚCI TORÓW 1435 MM ZARZĄDZANEJ PRZEZ PKP POLSKIE LINIE KOLEJOWE S.A.






















1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb.

Języki formalne i techniki translacji

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Matura próbna 2014 z matematyki-poziom podstawowy

TESTOWANIE OPROGRAMOWANIA PATRIOTYCZNEJ GRY KOMUNIKACYJNEJ

Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark

Przychodnia 0. Stwórz projekt aplikacja konsolowa lub WPF (przemyśl wybór, bo zmiana może być czasochłonna). 1. Stwórz abstrakcyjną klasę Osoba.

R-LINK Evolution Instrukcja instalacji oprogramowania

ROZPORZĄDZENIE MINISTRA KULTURY I DZIEDZICTWA NARODOWEGO 1) z dnia 19 maja 2009 r.

Generatory pomocy multimedialnych

Scenariusz lekcji Ozobot w klasie: Ciąg Fibonacciego

Programowanie w języku Java

Przed zaciągnięciem kredytu przeczytaj dokładnie umowę i zwróć uwagę na

ZADANIE 1. Ważenie (14 pkt)

1. Napisz program, który wyświetli Twoje dane jako napis Witaj, Imię Nazwisko. 2. Napisz program, który wyświetli wizytówkę postaci:

KURS MATEMATYKA DYSKRETNA

EGZAMIN MATURALNY Z INFORMATYKI

Tytuł ebooka Przyjmowanie nowego wpisujesz i zadajesz styl

Ćwiczenie 2 arkusze kalkulacyjne użycie funkcji logicznych

6. Pętle while. Przykłady

Metody i techniki nauczania: ćwiczenia praktyczne, ćwiczenia interaktywne, zabawa ruchowa.

Spis treści. 1. Sposób uruchomienia aplikacji...2. Zalecane ustawienia sprzętowe Praca z aplikacją Kalkulator opłat RRL...

Język C, instrukcje sterujące (laboratorium)

Napisz program wypisujący na standardowym wyjściu następujący napis: Napis zawierający różne dziwne znaczki // \ \$ &%.

ROZPORZĄDZENIE MINISTRA KULTURY I DZIEDZICTWA NARODOWEGO 1) z dnia 13 listopada 2008 r.

Laboratorium - Poznawanie FTP

Opis obsługi programu KALKULACJA

Wojewódzki Przedmiotowy Konkurs z informatyki dla uczniów szkół gimnazjalnych ETAP REJONOWY 2013/2014 TEST

KATOWICE, LIPIEC 2018 WERSJA 1.0

Czas pracy: 60 minut

PRZEWODNIK DLA PRZEWOŹNIKÓW

* Funkcje, podprogramy

1. Obliczenia rowu przydrożnego prawostronnego odcinki 6-8

Jak przygotować i wydrukować strony arkuszy ocen z wynikami klasyfikacji końcowej oraz świadectwa ukończenia szkoły?

QualitySpy moduł reports

Kuratoryjny Konkurs Informatyczny dla uczniów gimnazjum województwa pomorskiego etap szkolny

CENNIK OPŁAT ZA KORZYSTANIE Z INFRASTRUKTURY KOLEJOWEJ O SZEROKOŚCI TORÓW 1435 MM ZARZĄDZANEJ PRZEZ PKP POLSKIE LINIE KOLEJOWE S.A.

Funkcje. Wprowadzenie. Mirosław Ochodek

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Transkrypt:

highway Autostradowe opłaty W Japonii miasta połączone są siecią autostrad. Sieć ta składa się z miast oraz autostrad. Każda autostrada łączy parę różnych miast. Żadne dwie autostrady nie łączą tej samej pary miast. Miasta ponumerowane są od do, natomiast autostrady od do. Każdą autostradą można przejechać w obu kierunkach. Z każdego miasta można dojechać do każdego innego, używając autostrad. Za przejazd każdą autostradą pobierana jest opłata. Opłata ta zależy od natężenia ruchu drogowego na tej autostradzie. Natężenie ruchu na autostradzie może być zarówno małe, jak i duże. Kiedy natężenie jest małe, opłata wynosi yenów (Japońska waluta). Kiedy natomiast natężenie jest duże, opłata wynosi yenów. Zagwarantowane jest, że. Zwróć uwagę, że wartości i są Tobie znane. Posiadasz maszynę, która dla danego scenariusza natężeń ruchu drogowego na każdej autostradzie, oblicza najmniejszą możliwą sumaryczną opłatę, którą trzeba zapłacić, aby przejechać pomiędzy miastami i ( ) zgodnie z ustalonymi natężeniami ruchu. Maszyna jest jednak na razie tylko prototypem. Wartości i są stałe (tj. wpisane na sztywno w maszynie) i nie są Tobie znane. Chciałbyś ustalić oraz. Planujesz więc spreparować kilka scenariuszy natężenia ruchu drogowego dla maszyny i podać je maszynie, a następnie, na podstawie uzyskanych odpowiedzi maszyny, ustalić oraz. Nie chcesz używać maszyny zbyt wiele razy, jako że przygotowanie scenariuszy natężenia ruchu drogowego jest dość kosztowne. Szczegóły implementacyjne Powinieneś zaimplementować następującą procedurę: find_pair(int N, int[] U, int[] V, int A, int B) N : liczba miast. U oraz V : tablice długości, gdzie jest liczbą autostrad łączących miasta. Dla każdego ( ), autostrada łączy miasta U[i] oraz V[i]. A : opłata za przejazd autostradą, jeżeli natężenie ruchu jest małe. B : opłata za przejazd autostradą, jeżeli natężenie ruchu jest duże. Procedura ta jest wywoływana dokładnie raz dla każdego testu. Zauważ, że wartość jest długością tablic i może zostać uzyskana, jak zostało to Highway (1 of 5)

opisane w Uwagach implementacyjnych. Procedura find_pair może wywoływać następującą funkcję: int64 ask(int[] w) Długość w musi być równa. Tablica w określa scenariusz natężenia ruchu drogowego. Dla każdego ( ) w[i] określa natężenie ruchu drogowego na -tej autostradzie. Wartość w[i] musi być równa lub. w[i] = 0 oznacza, że natężenie ruchu na -tej autostradzie jest małe. w[i] = 1 oznacza, że natężenie ruchu na -tej autostradzie jest duże. Funkcja ta zwraca najmniejszą sumaryczną opłatę za przejazd pomiędzy miastami oraz przy natężeniu ruchu określonym przez w. Funkcja ta może być wywołana co najwyżej razy (dla każdego testu). Aby udzielić odpowiedzi procedura find_pair powinna wywołać następującą procedurę : answer(int s, int t) s oraz t muszą być parą oraz (kolejność nie ma znaczenia). Procedura ta musi być wywołana dokładnie raz. Jeżeli któryś z powyższych warunków nie jest spełniony, Twój program dostanie werdykt Wrong Answer. W przeciwnym wypadku, Twój program dostanie werdykt Accepted i Twój wynik będzie zależał od liczby wywołań funkcji ask (zobacz sekcję Podzadania). Przykład Niech,,,,,, oraz. Sprawdzaczka wywołuje find_pair(4, [0, 0, 0, 1], [1, 2, 3, 2], 1, 3). Highway (2 of 5)

Na rysunku powyżej, krawędź o numerze odpowiada -tej autostradzie. Możliwe wywołania funkcji ask oraz odpowiadające im wyniki zostały przedstawione poniżej: Wywołanie Zwrócona wartość ask([0, 0, 0, 0]) 2 ask([0, 1, 1, 0]) 4 ask([1, 0, 1, 0]) 5 ask([1, 1, 1, 1]) 6 Dla wywołania funkcji ask([0, 0, 0, 0]), natężenie ruchu na każdej autostradzie jest małe i opłata za przejazd dla każdej autostrady wynosi. Najtańsza trasa z do to. Sumaryczna opłata za przejazd tą trasą wynosi. Stąd zwrócona wartość wynosi. Aby poprawnie odpowiedzieć, procedura find_pair powinna wywołać procedurę answer(1, 3) albo answer(3, 1). Plik sample-01-in.txt w załączonym pakiecie w formacie zip odpowiada temu przykładowi. Inne przykładowe wejścia również są dostępne w tym pakiecie. Ograniczenia Dla każdego oraz ( ) Highway (3 of 5)

Z każdego miasta możesz przejechać do każdego innego używając autostrad. W tym zadaniu sprawdzaczka NIE jest adaptacyjna. Oznacza to, że oraz są ustalone przy uruchomieniu programu sprawdzającego i nie zależą od zapytań zadanych przez Twój program. Podzadania 1. (5 punktów) jedno z i jest równe,, 2. (7 punktów) jedno z i jest równe, 3. (6 punktów),, ( ) 4. (33 punkty) 5. (18 punktów), 6. (31 punktów) Brak dodatkowych ograniczeń. Zakładając, że Twój program dostał werdykt Accepted oraz wykonał wywołań funkcji ask, Twój wynik dla danego testu jest zależny od numeru podzadania i jest obliczany w następujący sposób: Podzadanie 1.. Podzadanie 2. Dla,. W przeciwnym wypadku. Podzadanie 3. Dla,. W przeciwnym wypadku. Podzadanie 4. Dla,. W przeciwnym wypadku. Podzadanie 5. Dla,. W przeciwnym wypadku. Podzadanie 6. Dla,. Dla,. Natomiast dla,. Pamiętaj, że Twój wynik dla każdego podzadania to minimum z wyników dla poszczególnych testów w tym podzadaniu. Przykładowa sprawdzaczka Przykładowa sprawdzaczka wczytuje wejście w następującym formacie: wiersz : wiersze ( ): Jeżeli Twój program dostanie werdykt Accepted, przykładowa sprawdzaczka wypisuje Accepted: q, gdzie q to liczba wywołań funkcji ask. Highway (4 of 5)

Jeżeli Twój program dostanie werdykt Wrong Answer, sprawdzaczka wypisuje Wrong Answer: MSG, gdzie znaczenie MSG jest następujące: answered not exactly once : Procedura answer nie została wywołana dokładnie raz. w is invalid : Długość argumentu w funkcji ask nie jest równa, bądź w[i] nie jest równe lub dla pewnego ( ). more than 100 calls to ask : Funkcja ask została wywołana więcej niż 100 razy. {s, t} is wrong : Procedura answer została wywołana z nieprawidłową parą s i t. Highway (5 of 5)