
#java #spoj #algorytmy #pytanie #programowanie #informatyka
http://pl.spoj.com/problems/PZPI3/ robię sobie to zadanko ze spoja i jest chyba ok, ale wywala "przekroczono limit czasu". Ma ktoś jakiś pomysł w jakim kierunku mógłbym to zoptymalizować? Nie chodzi mi o gotowca, ale wskazówki, gdzie się zastanowić. https://pastebin.com/SrYjZFdt otoż mój kod.
http://pl.spoj.com/problems/PZPI3/ robię sobie to zadanko ze spoja i jest chyba ok, ale wywala "przekroczono limit czasu". Ma ktoś jakiś pomysł w jakim kierunku mógłbym to zoptymalizować? Nie chodzi mi o gotowca, ale wskazówki, gdzie się zastanowić. https://pastebin.com/SrYjZFdt otoż mój kod.
- Najlepsze
- Wszystkie komentarze







Nie wczytywałem się w treść zadania, ale często w tego typu zadaniach chodzi o znalezienie sposobu na rozwiązanie problemu przy mniejszej złożoności obliczeniowej - przykładowo w Twoim rozwiązaniu jest pętla w pętli co może skutkować złożonością obliczeniową typu O(n^2) (nie analizowałem skąd się biorą
numerek...ale pesymistycznie zakładam że może być ich nawetn, no chyba że jest jeszcze gorzej)...Czasem pełne rozwiązanie takich zadań polega na zauważeniu
potem odpuściłbym ze zbieraniem dzielników do kolekcji tylko od razu je sumował w zmiennej i inkrementował jakiś licznik.
Ta jedna zmiana przyspieszy twój kod co najmniej o rząd wielkości.
Z takich drobnostek, które nie mają w tym wypadku dużego wpływu na wydajność ale jednak rzucają się w oczy:
- integer.valueOf zwraca Integer, Integer.parseInt()
@GotoFinal: *prymitywnych