RACE Wyścig (Race)
Transkrypt
RACE Wyścig (Race)
International Olympiad in Informatics 2011 22–29 July 2011, Pattaya City, Thailand Competition Tasks – Day 1 RACE Polish 1.3 Wyścig (Race) W tym roku, równolegle do IOI, w Pattaya odbędzie się Międzynarodowy Wyścig Samochodowy (MWS) 2011. Obowiązkiem organizatorów jest wytyczenie jak najlepszej trasy wyścigu. W regionie Pattaya-Chonburi leży N miast połączonych siecią N-1 autostrad. Każda autostrada jest dwukierunkowa, łączy dwa różne miasta, a jej długość w kilometrach wyraża się liczbą całkowitą. Dodatkowo, istnieje dokładnie jedna ścieżka łącząca każdą parę miast. Innymi słowy, pomiędzy każdą parą miast istnieje dokładnie jedna trasa składająca się z ciągu autostrad, która nie przebiega dwukrotnie przez żadne miasto. Regulamin MWS mówi, że trasa wyścigu powinna być ścieżką o długości dokładnie K kilometrów i powinna się zaczynać i kończyć w różnych miastach. Aby uniknąć wypadków, trasa nie może dwukrotnie przebiegać po żadnej autostradzie (ani przez żadne miasto). Wyścig może spowodować utrudnienia w ruchu, dlatego jego trasa powinna składać się z jak najmniejszej liczby autostrad. Zadanie Zaimplementuj procedurę best_path(N,K,H,L). Jej parametry to: N – liczba miast. Miasta są ponumerowane liczbami od 0 do N-1. K – długość trasy. H – dwuwymiarowa tablica opisująca autostrady. Dla 0 ≤ i < N-1, autostrada i łączy miasta H[i][0] oraz H[i][1]. L – jednowymiarowa tablica opisująca długości autostrad. Dla 0 ≤ i < N-1, długością autostrady i jest L[i]. Możesz założyć, że wszystkie wartości w tablicy H zawierają się w przedziale [0, N-1] oraz że autostrady łączą wszystkie miasta w sposób opisany powyżej. Ponadto, wartości w tablicy L są liczbami całkowitymi z przedziału [0, 1 000 000]. Twoja procedura powinna zwracać najmniejszą możliwą liczbę autostrad, z których może składać się poprawna trasa o długości dokładnie K. Jeśli taka trasa nie istnieje, Twoja procedura powinna zwrócić -1. Page 1 of 4 International Olympiad in Informatics 2011 22–29 July 2011, Pattaya City, Thailand Competition Tasks – Day 1 RACE Polish 1.3 Przykłady Przykład 1. Rozważmy przykład z rysunku numer 1, gdzie N=4, K=3, 01 H= 1 2 13 1 L= 2 4 Wyścig może zacząć się w mieście numer 0 i prowadzić przez miasto numer 1 do miasta numer 2. Trasa będzie miała długość 1 km + 2 km = 3 km i składać się będzie z dwu autostrad. Jest to najlepsza możliwa trasa wyścigu, dlatego best_path(N,K,H,L) powinno zwrócić 2. Rysunek 1. Przykład 2. Rozważmy przykład z rysunku numer 2, gdzie N=3, K=3, H= 01 12 L= 1 1 Nie istnieje poprawna trasa wyścigu. W tym przypadku best_path(N,K,H,L) powinno zwrócić -1. Rysunek 2. Przykład 3. Rozważmy przykład z rysunku numer 3, gdzie N=11, K=12, 0 0 2 3 4 H= 0 6 6 8 8 1 2 3 4 5 6 7 8 9 10 3 4 5 4 6 L= 3 2 5 6 7 Rysunek 3. Page 2 of 4 International Olympiad in Informatics 2011 22–29 July 2011, Pattaya City, Thailand Competition Tasks – Day 1 RACE Polish 1.3 Jedna z możliwych tras składa się z 3 autostrad: z miasta 6, przez miasta 0 i 2 do miasta 3. Można też poprowadzić trasę z miasta 10, przez miasto 8 do miasta 6. Obydwie trasy wyścigu mają długość 12 km, zgodnie z wymaganiami. Druga z nich jest optymalna, bo nie istnieje trasa składająca się z jednej autostrady. Zatem best_path(N,K,H,L) powinno zwrócić 2. Podzadania Podzadanie 1. (9 punktów) 1 ≤ N ≤ 100 1 ≤ K ≤ 100 Sieć drogowa tworzy linię, tj. dla 0 ≤ i < N-1, autostrada i łączy miasta i oraz i+1. Podzadanie 2. (12 punktów) 1 ≤ N ≤ 1 000 1 ≤ K ≤ 1 000 000 Podzadanie 3. (22 punkty) 1 ≤ N ≤ 200 000 1 ≤ K ≤ 100 Podzadanie 4. (57 punktów) 1 ≤ N ≤ 200 000 1 ≤ K ≤ 1 000 000 Szczegóły techniczne Ograniczenia Limit czasu procesora: 3 sekundy Dostępna pamięć: 256 MB Uwaga: Nie ma osobnego ograniczenia na rozmiar stosu. Pamięć użyta przez stos wlicza się w całkowity rozmiar używanej pamięci. Interfejs (API) Katalog na pliki źródłowe: race/ Nazwa pliku z rozwiązaniem: race.c lub race.cpp lub race.pas Interfejs procedur zawodnika: race.h lub race.pas Interfejs procedur modułu oceniającego: race.h lub racelib.pas Przykładowy moduł oceniający: grader.c lub grader.cpp lub grader.pas Pliki wejściowe dla przykładowego modułu oceniającego: grader.in.1, grader.in.2, ... Page 3 of 4 International Olympiad in Informatics 2011 22–29 July 2011, Pattaya City, Thailand Competition Tasks – Day 1 RACE Polish 1.3 Uwaga: Przykładowy moduł oceniający wczytuje dane zgodnie z poniższym formatem: Wiersz 1: N oraz K. Wiersze od 2 do N: opis autostrad; wiersz i+2 (dla 0 ≤ i < N-1) zawiera liczby H[i][0], H[i][1] oraz L[i] oddzielone pojedynczym odstępem. Wiersz N+1: oczekiwana odpowiedź. Pliki z oczekiwaną odpowiedzią dla przykładowych wejść przykładowego modułu oceniającego: grader.expect.1, grader.expect.2, ... W tym zadaniu powyższe pliki powinny zawierać jedynie napis „Correct.” Page 4 of 4