<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Forum Pasja Informatyki - Najnowsze z tagiem dp</title>
<link>https://forum.pasja-informatyki.pl/tag/dp</link>
<description>Powered by Question2Answer</description>
<item>
<title>Zadanie Kolekcjoner Monet, programowanie dynamiczne</title>
<link>https://forum.pasja-informatyki.pl/585711/zadanie-kolekcjoner-monet-programowanie-dynamiczne</link>
<description>

&lt;p&gt;Mam problem z takim zdaniem:&lt;/p&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;https://forum.pasja-informatyki.pl/?qa=blob&amp;amp;qa_blobid=12698148430092108518&quot; style=&quot;height:327px; width:600px&quot;&gt;&lt;/p&gt;



&lt;p&gt;Pewnie wejdzie tu jakieś dp, a dokładniej plecak. Napisałem kod w O(N^2 * K), zakładając, że nie używam danego przedmiotu i robię prosty plecak z pozostałymi w celu sprawdzenia, czy mogę ułożyć K pozostałymi. Dostaję 50pkt. Bardzo prosiłbym o hinta jak to przyśpieszyć.&lt;/p&gt;



&lt;p&gt;Kod:&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;

using namespace std;

int n = 0, k = 0, wczytana_liczba = 0, cnt = 0;
vector&amp;lt;bool&amp;gt; visited;
vector&amp;lt;bool&amp;gt; dp;
vector&amp;lt;int&amp;gt; A;
vector&amp;lt;int&amp;gt; sprawdzane;
vector&amp;lt;int&amp;gt; do_dodania;

inline bool czy_pasuje(int x)
{
    dp.assign(k+1,false);
    dp[0] = true;
    sprawdzane = vector&amp;lt;int&amp;gt;();
    sprawdzane.push_back(0);
    for (int i = 0; i &amp;lt; n; ++i)
    {
        if (i == x)
            continue;
        do_dodania = vector&amp;lt;int&amp;gt;();
        for (int j = sprawdzane.size()-1; j &amp;gt;= 0; --j)
        {
            int val = sprawdzane[j];
            if (val + A[i] &amp;lt;= k and dp[val] == true and dp[val+A[i]] == false)
            {
                do_dodania.push_back(val+A[i]);
                dp[val+A[i]] = true;
            }
            if (dp[k] == true)
                return true;
        }
        for (int j = do_dodania.size()-1; j &amp;gt;= 0; --j)
            sprawdzane.push_back(do_dodania[j]);
    }
    return false;
}

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    cin &amp;gt;&amp;gt; n &amp;gt;&amp;gt; k;

    visited.assign(k+1,false);
    for (int i = 0; i &amp;lt; n; ++i)
    {
        cin &amp;gt;&amp;gt; wczytana_liczba;
        visited[wczytana_liczba] = true;
    }

    for (int i = 1; i &amp;lt;= k; ++i)
        if (visited[i] == true)
            A.push_back(i);

    for (int i = 0; i &amp;lt; n; ++i)
    {
        if (czy_pasuje(i) == false)
        {
            cout &amp;lt;&amp;lt; A[i] &amp;lt;&amp;lt; ' ';
            ++cnt;
        }
    }

    if (cnt == 0)
        cout &amp;lt;&amp;lt; &quot;OK&quot;;
    cout &amp;lt;&amp;lt; '\n';

    return 0;
}
&lt;/pre&gt;



&lt;p&gt;Z góry dziękuję za pomoc i poświęcony czas!&lt;/p&gt;</description>
<category>Algorytmy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/585711/zadanie-kolekcjoner-monet-programowanie-dynamiczne</guid>
<pubDate>Sat, 10 Jun 2023 21:51:41 +0000</pubDate>
</item>
<item>
<title>programowanie dynamiczne, zadanie kieszonkowe OIG</title>
<link>https://forum.pasja-informatyki.pl/581006/programowanie-dynamiczne-zadanie-kieszonkowe-oig</link>
<description>

&lt;p&gt;Chcąc przećwiczyc dp, natknąłem się na takie zadanie z OIG:&amp;nbsp;&lt;a href=&quot;https://szkopul.edu.pl/problemset/problem/PJA7VC3zOTwh1qPU43Wu9O4v/site/?key=statement&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://szkopul.edu.pl/problemset/problem/PJA7VC3zOTwh1qPU43Wu9O4v/site/?key=statement&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;3 razy próbowałem napisać zachłana, ale wszystkie trzy się wywaliły, ale napisałem dp na 40pkt, w O(N*K). Mianowicie: dp[i][j] - max wynik, jaki możemy osiągnąć przeglądając stosiki od 0&amp;nbsp;do i, biorąc dokładnie j elementów.&lt;/p&gt;



&lt;p&gt;A - tablica górnych elementów&lt;/p&gt;



&lt;p&gt;B - tablica dolnych elementów&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
    dp[0][1] = A[0];
    dp[0][2] = A[0] + B[0];
    for (int i = 1; i &amp;lt; n; ++i)
    {
        dp[i][1] = max(dp[i-1][1], A[i]);
        dp[i][2] = max(dp[i-1][2], max(dp[i-1][1] + A[i], A[i] + B[i]));
        for (int j = 3; j &amp;lt;= k; ++j)
            dp[i][j] = max(dp[i-1][j], max(dp[i-1][j-1] + A[i], dp[i-1][j-2] + A[i] + B[i]));
    }&lt;/pre&gt;



&lt;p&gt;No i na koniec zwracam dp[n-1][k].&lt;/p&gt;



&lt;p&gt;No i mam problem, jak to przyśpieszyć, o ile się wogóle da.&amp;nbsp;&lt;/p&gt;



&lt;p&gt;Z góry dziękuję za pomoc i poświęcony czas!&lt;/p&gt;</description>
<category>Algorytmy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/581006/programowanie-dynamiczne-zadanie-kieszonkowe-oig</guid>
<pubDate>Sat, 25 Feb 2023 23:44:33 +0000</pubDate>
</item>
<item>
<title>Zadanie Pasy Ruchu ILOCAMP</title>
<link>https://forum.pasja-informatyki.pl/579294/zadanie-pasy-ruchu-ilocamp</link>
<description>

&lt;p&gt;Zadanie &lt;a href=&quot;https://szkopul.edu.pl/problemset/problem/UE0q8-SzHWYoYXWowKjr8Vc1/site/?key=statement&quot; rel=&quot;nofollow&quot;&gt;Pasy ruchu&lt;/a&gt;. Na początku miałem 30%, ale zauważyłem, że niepotrzebnie Y * (X * Y)&amp;nbsp;razy zeruję wszystkie wartości tablicy VIS[]. Po poprawce nadal nie mam 100%, gdyż z 30% zrobiło się ich 90. Jeden test nadal się wywala ze względu na czas.
&lt;br&gt;

&lt;br&gt;
przed optymalizacją: &lt;a href=&quot;https://ideone.com/FPi6QR&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://ideone.com/FPi6QR&lt;/a&gt;
&lt;br&gt;

&lt;br&gt;
po: &lt;a href=&quot;https://ideone.com/gkTgf3&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://ideone.com/gkTgf3&lt;/a&gt;
&lt;br&gt;

&lt;br&gt;
Pomoże ktoś?&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/579294/zadanie-pasy-ruchu-ilocamp</guid>
<pubDate>Sun, 05 Feb 2023 10:23:18 +0000</pubDate>
</item>
<item>
<title>zbyt wolne dp</title>
<link>https://forum.pasja-informatyki.pl/579151/zbyt-wolne-dp</link>
<description>siema, wzialem sie dzisiaj za cwiczenie dp i podjalem sie proby zrobienia zadania: &lt;a href=&quot;https://szkopul.edu.pl/problemset/problem/ky4uF8wdhvqLQAkPtt1wI-_5/site/?key=statement&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://szkopul.edu.pl/problemset/problem/ky4uF8wdhvqLQAkPtt1wI-_5/site/?key=statement&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
niestety dp, ktorego uzylem jest zbyt wolne. pomoze ktos, albo wskaze gdzie robie za duzo operacji?&lt;br /&gt;
&lt;br /&gt;
kod: &lt;a href=&quot;https://ideone.com/pEsxiN&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://ideone.com/pEsxiN&lt;/a&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/579151/zbyt-wolne-dp</guid>
<pubDate>Thu, 02 Feb 2023 20:23:08 +0000</pubDate>
</item>
<item>
<title>DP - zadania</title>
<link>https://forum.pasja-informatyki.pl/578438/dp-zadania</link>
<description>Witam, ma ktoś jakiś zbiór łatwych zadań z DP (dynamic programming)? Zacząłem dopiero naukę tego podejścia algorytmicznego i chciałbym poćwiczyć. Najlepiej gdyby zadania były po polsku oraz nie były to zadania ze szkopula, bo te, ktore umialem to juz zrobilem. Dzieki z gory :D</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/578438/dp-zadania</guid>
<pubDate>Fri, 20 Jan 2023 21:02:08 +0000</pubDate>
</item>
<item>
<title>Co dokupić do podłączenia drugiego monitora?</title>
<link>https://forum.pasja-informatyki.pl/573209/co-dokupic-do-podlaczenia-drugiego-monitora</link>
<description>

&lt;p&gt;Witam pierwszy&amp;nbsp;raz podłączam drugi monitor do komputera więc wole się zapytać. Posiadam kabel:
&lt;br&gt;
&lt;em&gt;&lt;strong&gt;awm e101 344 style 20276 vw-1 80c (chyba VGA)&amp;nbsp;&lt;/strong&gt;&lt;/em&gt;a do karty graficznej mogę podpiąć&amp;nbsp;jedynie HDMI i DP co muszę dokupić by podłączyć monitor do komputera?&lt;/p&gt;



&lt;p&gt;Karta graficzna:
&lt;br&gt;
NVIDIA Geforce RTX 2060 super&lt;/p&gt;</description>
<category>Sprzęt komputerowy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/573209/co-dokupic-do-podlaczenia-drugiego-monitora</guid>
<pubDate>Sun, 16 Oct 2022 18:16:46 +0000</pubDate>
</item>
<item>
<title>Polaczenie Monitora 144hz do laptopa</title>
<link>https://forum.pasja-informatyki.pl/267073/polaczenie-monitora-144hz-do-laptopa</link>
<description>Więc sprawa wygląda następująco:&lt;br /&gt;
&lt;br /&gt;
Mam monitor 144Hz z wejściami DP, HDMI oraz DVI-D i chce połączyć go z laptopem w którym mam wejścia HDMI, VGA, oczywiście jasna sprawa chce otrzymać w końcowym rezultacie odświeżanie 144Hz.&lt;br /&gt;
&lt;br /&gt;
Zastanawiałem się nad możliwością użycia kabla DP i przejściówki HDMI - DP, lecz nie mogę znaleźć takowej przejściówki (żeńskie DP z jednej strony oraz męskie HDMI z drugiej)&lt;br /&gt;
&lt;br /&gt;
Z góry dziękuje za wszelką pomoc oraz od razu piszę iż nie zamierzam tu rozpętać kolejnej wojny apropos czy ludzkie oko widzi więcej niż 30 klatek.&lt;br /&gt;
&lt;br /&gt;
Pozdrawiam Mski</description>
<category>Sprzęt komputerowy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/267073/polaczenie-monitora-144hz-do-laptopa</guid>
<pubDate>Tue, 04 Jul 2017 15:44:05 +0000</pubDate>
</item>
</channel>
</rss>