HDU6183 Color it 動態開點線段樹

2022-05-02 20:39:11 字數 1013 閱讀 8377

**:

給出以下操作:$「0」$代表清空所有顏色,$"1$ $x$ $y$ $c$$"$代表在座標$(x,y)$塗上第$c$種顏色,$"2$ $x$ $y_1$ $y_2$$"$代表統計$x$軸上$[1,x]$和y軸上$[y_1,y_2]$的顏色數,乙個點可以有多種顏色,$「3」$代表結束。資料保證$n,m \leq 1e6,0 \geq c \leq 50,y_1 \leq y_2$。

別問,問就開50棵線段樹(mle警告),開$50$棵動態開點的線段樹,以$y$軸為結點,維護區間內的顏色的最小的橫座標值。查詢時,橫座標的區間左邊界已經確定,區間右邊界為$x$,則小於等於$x$的才會被統計,則區間中的最小橫座標值決定該區間是否有顏色滿足要求,然後依次查詢$50$種顏色即可。(本題需要剪枝,如果在左子樹搜到了,就不需要在右子樹搜尋,否則會tle)。

ac**:

#include #pragma gcc optimize(3)

using namespace std;

const int maxn=1000005;

const int m=0x3f3f3f3f;

struct segtree

*/ };

node tr[maxn*3];

int rt[51];

int tot=0;

inline void init()

inline bool query(int l,int r,int rt,int lim)

int ans=0;

int m=(tr[rt].l+tr[rt].r)>>1;

if(l<=m&&!ans)

ans+=query(l,r,tr[rt].ls,lim);

if(r>m&&!ans)

ans+=query(l,r,tr[rt].rs,lim);

return ans;

}};segtree tr;

int main()

else if(a==2)

}return 0;

}

hdu6183 線段樹動態開點

在寫題的時候偶然發現的 都是大佬 大概就是 將線段樹接下來的 i 1 和 i 1 1改為了用乙個陣列l i 和r i 來儲存感覺很有意思 有一點點像鏈式前向星 題目位址 hdu6183 還乙個大佬寫的 cdq 線段樹 include define mod 998244353 using namesp...

hdu 6183 線段樹的空間優化

題意 乙個空的座標系,有 種操作 1 x y c表示在 x,y 點染上顏色c 2 x y1 y2表示查詢在 1,y1 到 x,y2 範圍內有多少種不同的顏色 0表示清屏 3表示程式退出 0 x,y 1000000,0 c 50 思路 開五十個線段樹 一種顏色乙個 以y為下表,儲存min x,因為查詢...

!HDU 1176 DP (矩陣動規)

題意 有乙個數軸,從0到10,小明開始在5這個位置。現在天上開始掉餡餅,小明每次只能移動單位一的長度,求小明最多能接到多少餡餅。分析 剛開始接觸動態規劃,還沒有真正理解動規的思維,所以剛開始的dp做法不知道對不對但是tle了。正確的方法是建立乙個以時間為行位置為列的矩陣,最初map i j 代表的是...