<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Forum Pasja Informatyki - Najnowsze z tagiem drzewo-przedziałowe</title>
<link>https://forum.pasja-informatyki.pl/tag/drzewo-przedzia%C5%82owe</link>
<description>Powered by Question2Answer</description>
<item>
<title>Zadanie Range Minimum Query SPOJ</title>
<link>https://forum.pasja-informatyki.pl/584618/zadanie-range-minimum-query-spoj</link>
<description>

&lt;p&gt;Rozwiązuję zadanie : &lt;a href=&quot;https://www.spoj.com/problems/RMQSQ/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://www.spoj.com/problems/RMQSQ/&lt;/a&gt;.
&lt;br&gt;
Niestety kod nie przechodzi wszystkich testów, nie mam pojęcia dlaczego.
&lt;br&gt;
Znacie może przyczynę? Używam drzewa przedziałowego.&lt;/p&gt;



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

using namespace std;

const int BASE = 128 * 1024;
const int MAXN = 1e5 + 5;

int numbers[MAXN];
int segtree[2 * BASE + 7];

void init(int n){
    for(int i=1;i &amp;lt;=n;++i){
        segtree[BASE + i] = numbers[i];
    }

    for(int i=BASE-1;i &amp;gt;= 1;--i){
        segtree[i] = min(segtree[2*i],segtree[2*i+1]);
    }
}

int get_min(int a,int b,int v,int l,int r){
    if(r &amp;lt; a || b &amp;lt; l)
        return 2147483647-100;
    else if(a &amp;lt;= l &amp;amp;&amp;amp; r &amp;lt;= b)
        return segtree[v];
    
    int mid = (l + r) / 2;
    int ls = get_min(a,b,2*v,l,mid);
    int rs = get_min(a,b,2*v+1,mid+1,r);
    return min(ls,rs);
}

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    int n;
    cin &amp;gt;&amp;gt; n;
    
    for(int i = 1;i &amp;lt;= n; ++i)
        cin &amp;gt;&amp;gt; numbers[i];
    
    for(int i=1;i&amp;lt;=2*BASE+3;++i)
        segtree[i] = 2147483647-100;
    init(n);
    int k;
    cin &amp;gt;&amp;gt; k;

    for(int i=0;i&amp;lt;k;++i){
        int left,right;
        cin &amp;gt;&amp;gt; left &amp;gt;&amp;gt; right;

        if(left &amp;gt; right)
        {
            int tmp = left;
            left = right;
            right = tmp;
        }

        cout &amp;lt;&amp;lt; get_min(left+1,right+1,1,0,BASE-1) &amp;lt;&amp;lt; '\n';
    }
    return 0;
}&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/584618/zadanie-range-minimum-query-spoj</guid>
<pubDate>Mon, 08 May 2023 17:31:15 +0000</pubDate>
</item>
<item>
<title>Modyfikacja drzewa przedział-przedział</title>
<link>https://forum.pasja-informatyki.pl/581333/modyfikacja-drzewa-przedzial-przedzial</link>
<description>Wie ktoś, czy jeśli mam zbudowane drzewo przedziałowe przedział-przedział typu (+, suma), czyli dodaje na przedziale i odczytuje sume na przedziale, to jeśli potrzebuje drzewo typu (+, max) albo (+, min), albo inną łączną oprację na przedziale, np. jakieś nwd, nww, XOR etc...... to jak zmienić tą strukturę, aby odpowiadała na te zapytania?&lt;br /&gt;
&lt;br /&gt;
ps. dodam, ze jesli chodzi o przedzial-przedzial, to jestem swiezakiem, dwa dni temu sie tego nauczylem i zdazylem zrobic moze z jedno zadanko na (+, suma) i to tyle, i dlatego pytam o takie sprawy</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/581333/modyfikacja-drzewa-przedzial-przedzial</guid>
<pubDate>Thu, 02 Mar 2023 21:10:08 +0000</pubDate>
</item>
<item>
<title>Zadanie Zdjęcia OIG. Zamiatanie oraz sqrt decomposition/drzewa przedział - przedział</title>
<link>https://forum.pasja-informatyki.pl/580306/zadanie-zdjecia-oig-zamiatanie-oraz-sqrt-decomposition-drzewa-przedzial-przedzial</link>
<description>Mam problem z takim zadaniem: &lt;a href=&quot;https://szkopul.edu.pl/problemset/problem/G9Fs1g7hoS5uG9eeV84d0Axr/site/?key=statement&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://szkopul.edu.pl/problemset/problem/G9Fs1g7hoS5uG9eeV84d0Axr/site/?key=statement&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Gdzieś wyczytałem, że można to zrobić jakimś drzewem przedziałowym, ale mam problem, bo nie wiem jak napisać drzewo przedziałowe 2D. Umiem zwykłe drzewa przedziałowe 1D, ale 2D, to sobie trochę nie wyobrażam jak to zrobić. Ma ktoś pomysł?&lt;br /&gt;
&lt;br /&gt;
A i umiem zrobić to zadanie na przedziale 1D,w sensie mam os liczbową, i drzewo przedział punkt, z dodaniem na przedziale i odczytem w punkcie, bo x_i oraz y_i są w przedziale [-200000,200000], więc starczy mi pamięci.&lt;br /&gt;
&lt;br /&gt;
Z góry dziękuję za pomoc i poświęcony czas!</description>
<category>Algorytmy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/580306/zadanie-zdjecia-oig-zamiatanie-oraz-sqrt-decomposition-drzewa-przedzial-przedzial</guid>
<pubDate>Thu, 16 Feb 2023 21:32:59 +0000</pubDate>
</item>
<item>
<title>drzewa przedziałowe</title>
<link>https://forum.pasja-informatyki.pl/579129/drzewa-przedzialowe</link>
<description>Siema, ma ktoś może jakiś zbiór zadanek na poćwiczenie drzew przedziałowych? najlepiej gdyby były jakieś takie łatwiejsze albo z objasnieniem</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/579129/drzewa-przedzialowe</guid>
<pubDate>Thu, 02 Feb 2023 16:02:34 +0000</pubDate>
</item>
<item>
<title>Zadanie litery OI, Drzewa przedziałowe vs Drzewa licznikowe</title>
<link>https://forum.pasja-informatyki.pl/577504/zadanie-litery-oi-drzewa-przedzialowe-vs-drzewa-licznikowe</link>
<description>Robiac zadanie z OI-a: &lt;a href=&quot;https://szkopul.edu.pl/problemset/problem/V1PYHlhJQGTY6KR5ODoTTYU4/site/?key=statement&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://szkopul.edu.pl/problemset/problem/V1PYHlhJQGTY6KR5ODoTTYU4/site/?key=statement&lt;/a&gt; napisałem kod na 100pkt, drzewami przedziałowymi przedział - punkt, bardzo prosty 60linii. w książeczce OI pisze:&lt;br /&gt;
&lt;br /&gt;
Do tego służyć może struktura danych zwana drzewem licznikowym lub przedziałowym2 . Jest to statyczne drzewo binarne zbudowane nad tablicą liczb t[1. .n]; pozwala ono na wykonywanie w czasie O(log n) następujących operacji:&lt;br /&gt;
&lt;br /&gt;
ustaw(i, x) — przypisz t[i] := x;&lt;br /&gt;
&lt;br /&gt;
suma(l, r) — zwróć sumę t[l] + t[l + 1] + . . . + t[r], przy czym l ¬ r.&lt;br /&gt;
&lt;br /&gt;
1 - Drzewo licznikowe to to samo co drzewo przedziałowe przedział - punkt?&lt;br /&gt;
&lt;br /&gt;
2 - Na Oi-a, polecacie jeszcze jakies struktury z przedzialami oprocz drzew przedział-punkt,punkt-przedział?&lt;br /&gt;
&lt;br /&gt;
3 - Znacie jakies fajne zadania na drzewa przedziałowe?&lt;br /&gt;
&lt;br /&gt;
Ps. Jak ktoś robi to zadanie, to polecam też popatrzeć na zadanie Kulki z finału 15 OIJ-a. Bardzo podobne.&lt;br /&gt;
&lt;br /&gt;
Z góry dziękuję za odpowiedź i poświęcony czas!&lt;br /&gt;
&lt;br /&gt;
edit: nwm czy dobrze przeczytalem, ale jesli to to ze trzyma sume wszystkich swoich potomkow w drzewie, to mozna drzewo podzielic dfs-em post order dodac na ciag i zrobic drzewo przedizał-punkt. Tylko nwm czy to jest drzewo licznikowe.</description>
<category>Algorytmy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/577504/zadanie-litery-oi-drzewa-przedzialowe-vs-drzewa-licznikowe</guid>
<pubDate>Tue, 03 Jan 2023 21:58:08 +0000</pubDate>
</item>
<item>
<title>Zadanie inwersje kontratakują 2</title>
<link>https://forum.pasja-informatyki.pl/576857/zadanie-inwersje-kontratakuja-2</link>
<description>

&lt;p&gt;Witam, zrobiłem zadanie &lt;a rel=&quot;nofollow&quot; href=&quot;https://szkopul.edu.pl/c/oboz10-14grupa2/p/inwersje2/27515/&quot;&gt;inwersje kontratakują 2&lt;/a&gt; ale mam za mało punktów, bo zrobiłem je iteracyjnie. Wie ktoś może w jaki sposób użyć w nim drzewa przedziałowego? Żadne sensowne wykorzystanie tej struktury w tym problemie nie przychodzi mi do głowy&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/576857/zadanie-inwersje-kontratakuja-2</guid>
<pubDate>Sat, 24 Dec 2022 09:41:55 +0000</pubDate>
</item>
<item>
<title>Drzewa przedziałowe algorytmy</title>
<link>https://forum.pasja-informatyki.pl/562323/drzewa-przedzialowe-algorytmy</link>
<description>Znacie może jakiś dobry materiał tłumaczący jak działają drzewa przedziałowe? Dowiedziałem się, że jest to technika trochę podobna do sum prefiksowych. Mam już pewne podstawy w algorytmice ale z drzewami przedziałowymi spotykam się pierwszy raz.</description>
<category>Algorytmy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/562323/drzewa-przedzialowe-algorytmy</guid>
<pubDate>Tue, 08 Mar 2022 13:38:48 +0000</pubDate>
</item>
<item>
<title>Chińskie drzewo przedziałowe</title>
<link>https://forum.pasja-informatyki.pl/410432/chinskie-drzewo-przedzialowe</link>
<description>Na obozie z algorytmów przygotowującego do OI wspomniane było chińskim drzewie przedziałowym. Szukam po sieci jakiegoś tutka na ten temat, ale nie mogę nigdzie znaleźć, są tylko zwykłe drzewa przedziałowe :\ Ale takie coś istnieje na 100% bo już kilka osób mi o nim mówiło. &lt;br /&gt;
&lt;br /&gt;
Jakby ktoś rzucił linka, albo wytłumaczył byłbym wdzięczny. &lt;br /&gt;
&lt;br /&gt;
Np. jest takie zadanie: &lt;a href=&quot;https://sio2.mimuw.edu.pl/c/wiekuisty_ontak2015/p/sad/?fbclid=IwAR0cdq5pj_QDS_GMZgS7lN5UnLBwngLPO_PwN5zLvNgxcCiOu55i48VHmOE&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://sio2.mimuw.edu.pl/c/wiekuisty_ontak2015/p/sad/?fbclid=IwAR0cdq5pj_QDS_GMZgS7lN5UnLBwngLPO_PwN5zLvNgxcCiOu55i48VHmOE&lt;/a&gt; &amp;nbsp;i nie zrobi się tego na zwyczajnym drzewie przedziałowym.</description>
<category>Algorytmy</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/410432/chinskie-drzewo-przedzialowe</guid>
<pubDate>Tue, 29 Jan 2019 16:40:14 +0000</pubDate>
</item>
</channel>
</rss>