• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zadanie Gdzie Zbudować Browar? OI

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
160 wizyt
pytanie zadane 23 lutego w Algorytmy przez pasjonat_algorytmiki Pasjonat (18,860 p.)
Mam problem z takim zadaniem z OI: https://szkopul.edu.pl/problemset/problem/Z1C91LB8rGYMxy6wRLBmbXba/site/?key=statement

Napisałem bruta w O(N^2), zakładam, że browar jest budowany w każdym możliwym mieście(jest kandydatem), i symuluję najkrótszą drogę O(N), dla każdego kandydata, albo z lewej albo z prawej. Przechodzi na 40pkt, ale nie wiem jak podejść do tego lepiej. Ma ktoś jakiś pomysł?

Z góry dziekuję za pomoc i poświęcony czas!
1
komentarz 23 lutego przez Whistleroosh Maniak (55,720 p.)
W Przygodach Bajtazara jest omówienie tego zadania. Jest tam też ciekawa obserwacja, że "Jeśli miasta są połączone siecią dróg będącą drzewem, to lokalizacja browaru nie zależy od odległości między miastami a tylko od zapotrzebowania miast"

Ale to tylko taka ciekawostka, która nie jest potrzebna do rozwiązania zadania.

Hint: koszt zamortyzowany + coś w stylu gąsienicy
komentarz 23 lutego przez pasjonat_algorytmiki Pasjonat (18,860 p.)
Dzięki!

Dokładnie coś w stylu gąsienicy wchodzi!
komentarz 11 marca przez pasjonat_algorytmiki Pasjonat (18,860 p.)

Krótki opis, a bardziej szkic rozwiązania.

Żeby rozwiązać całe zadanie, skupmy się na obserwacji. Policzmy koszt jaki trzeba, zapłacić, gdy zbudujemy browar w dowolnym mieście. Ja założę, że będzie to miasto o numerze 1. I teraz zaużmy, że pomarańczowe to do których opłaca mi się(jest mniejszy koszt na ścieżce) idąc w prawo, a niebieskie to samo, tylko idąc w lewo. Patrz na rysunek:

To zauważ, że jest tu jedna ciekawa zależność. Jeśli z miasta pierwszego opłaca nam się idąc w prawo dojść do miasta 4, to opłaca nam się też dojść do miasta 3,2. Ten fakt jest logiczny i intuicyjny. Bo jak chcielibyśmy iść lewym do tego miasta, to będzie większy koszt niż dojście do 4 idąc w lewo, a to jest jeszcze dalej, więc koszt idzie jeszcze bardziej w górę.

To spostrzerzenie prowadzi nas już praktycznie do końca. Liczymy wynik, numer ostatniego miasta, do którego opłaca nam się dojść idąc w prawo, sumę zapotrzebowania w gąsienicy, sumę odległości w gąsienicy, sumę odległości i zapotrzebowania poza gąsienicą. Te zmienne długości, to każdy sobie powinen zapisać jak chce, bo np. odległości i zapotrzebowania poza gąsienicą nie trzeba raczej liczyć, bo jak znamy sumę odległości i zapotrzebowania w całym mieście, sumę odległości i zapotrzebowania w gąsienicy, to można sobie wyliczyć jednym odejmowaniem. Przy założeniu, żę stawiamy browar w mieście np. pierwszym. I symulujemy potem stawianie w miastach 2,3,4,5,6....N i jak możemy to przesuwamy gąsienicę do kolejnych miast. -> O(N), bo takich skoków gąsienicą wykonamy maksymalnie około 2N, koszt zamortyzowany. Myśląc w gąsienicy mam na myśli, coś co jest w gąsienicy, czyli np dla rysunku na górze drogę pomiędzy 1,2,3,4.(ostanie do których nam się opłaca dojśc idąc w prawo, dla danego sprawdzanego początku gąsienicy)

Można analogicznie chodzić sobie w lewo zamiast w prawo, wydaje się być to obojętne.

W przygodach jest dokładny opis, i podlinkowanie zadań patrz także. W książeczce OI, na stronie oi-a pewnie też jest rozwiązanie.

Mnie zastanawiała jeszcze jedna rzecz. Czy można zamiast tego kosztu zamortyzowanego z "gąsienicą" podejść do tego innaczej, i z każdego wierzchołka odpowiadać niezależnie, nie znając wyników i sum długości i zapotrzebowania dla poprzednich wyników. Faktem jest, że najprawdopodobniej możemy binarnie znaleźć ostatni do którego opłaca nam się iść w prawo, i ostatni do którego opłaca nam się iść w lewo, ale nie wiem jak policzyć te koszty, na tej ścieżce, więc ja nie umiem, ale całkiem możliwe, że da się to jakoś zrobić. Jeśli ktoś wymyślił, by takie rozwiązanie w O(N lg N), to powinno wejść na 100pkt, ale nie jestem pewien.

1 odpowiedź

0 głosów
odpowiedź 23 lutego przez tangarr Mędrzec (154,160 p.)
Wydaje mi się, że browar może powstać między miastami.
Podejrzewam, że zadanie można zrealizować poszukiwaniem binarnym po autostradzie.
komentarz 23 lutego przez pasjonat_algorytmiki Pasjonat (18,860 p.)
Tylko właśnie cały problem wydaje mi się, że polega na tym, że do danego miasta możesz dojechać albo z lewej, albo z prawej. Jakby dało się tylko jedna strona, to ja się zgadam, że wyszukiwanie binarne wchodzi.

Podobne pytania

0 głosów
1 odpowiedź 83 wizyt
0 głosów
1 odpowiedź 162 wizyt
0 głosów
1 odpowiedź 142 wizyt
pytanie zadane 1 maja w Algorytmy przez pasjonat_algorytmiki Pasjonat (18,860 p.)

91,832 zapytań

140,506 odpowiedzi

316,996 komentarzy

61,163 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...