Ostatnie posty

Kluczem do rozwiązania jest zastanowienie się jakby wyglądał wydajny algorytm sprawdzający, czy dany ciąg jest dobry.
Oczywiste obserwacje są takie że zawsze można ścinać drzewa od lewej do prawej i że nie opłaca się mieć >=2 dni kiedy pierwsze drzewa są takich samych gatunków. W owym wydajnym algorytmie sprawdzającym czy ustalony ciąg jest poprawny chcemy iść od lewej do prawej i trzymać zbiór gatunków drzew, które mogły otwierać dzień, w którym scielismy i-te drzewo. Jeżeli przyjdzie nam jakieś drzewo którego gatunek mógł otwierać aktualny dzień, to wiemy że aktualny moment jest potencjalnym zamykającym dzień i następujące po nim drzewo będzie mogło otwierac dzień. Oczywiste z danego zbioru nigdy nic nie wylatuje.
Mając to zrozumienie, łatwo już je przekształcić na dynamika rozwiązującego oryginalne zadanie w n^2. dp[i][j][k] (gdzie 1<=i<=n, 1<=j<=i, k-bool) będzie oznaczać ile jest takich ciągów że pierwsze i drzew tworzy taki ciąg, że dany "otwierający zbiór" ma rozmiar j, gdzie i-ty dzień mógł lub nie mógł zamykać jakiś dzień w zależności od wartości boolowskiej zmiennej k
+
Potwierdzam.
Dlatego napisałem, że treść jest uproszczona ;-)
Sa do pobrania po lewej w dziale Testy
Czy można prosić o dane, na których były testowane/punktowane kody?
Potwierdzam
+
Potwierdzam

ad5cb0513a032530613bdfc2fda283c14c7032baf3a6d400acb3597b2a25eaa8 b_tests.zip
Potwierdzam

49eb099c871b1de527e1556e0535adde40c4e21bbea9379334fecad821347c6f mop.zip
+1
+
Potwierdzam
Mógłby ktoś pochwalić się swoim poprawnym swoim rozwiązaniem?