洛谷P2286寵物收養場 改

2022-07-22 05:27:10 字數 2092 閱讀 4157

#include#define abs(a,b) (a>b?a-b:b-a)

#define mod 1000000

#define mxn 80000+5

intread()

while(c>='

0'&&c<='9'

)

return x*w;

}int

ans;

struct

nodenode[mxn],*root,*recycle[mxn];

int n,p,x,node_num=-1,top=-1

;bool

tree_type;

void rotate(node *now)

if(f->left==now)

if(f->right==now)

f->fa=now;

if(now->fa==null) root=now;

return;}

void splay(node *now,node *des)

else

if(gf->right==f&&f->left==now)

else

if(gf->left==f&&f->left==now)

else

if(gf->right==f&&f->right==now)

}if(now->fa==null) root=now;

return;}

node* node_new(int vl,bool

typ)

else

n->val=vl;

n->type=typ;

n->left=null;

n->right=null;

n->fa=null;

returnn;}

void node_insert(node *now,node *v)

if(now==null)

if(v->val<=now->val)

else node_insert(now->left,v);

}if(v->val>now->val)

else node_insert(now->right,v);

}splay(v,null);

return;}

node*root_prev()

else

return

null;

}node*root_subs()

else

return

null;

}void node_delete(node *now)

if(now->left==null)

if(now->right==null)

node *l,*r;

l=now->left;

r=now->right;

l->fa=null;

node *t=now->left;

while(t->right!=null) t=t->right;

splay(t,null);

t->right=r;

r->fa=t;

root=t;

return;}

void ques(node *now)

else ans+=t1;

ans%=mod;

node_delete(now);

node_delete(a);

}return;}

intmain()

printf("%d

",ans);

return0;

}

優化**

這次修改了一下上次寫的**。

由於本人建樹的方法屬於靜態分配記憶體(動態分配總會出現玄學錯誤...),因此記憶體空間要開很大很大才不會re,刪除節點後,上一次的**沒有垃圾**,導致空間複雜度稍大(上一次大約o(5n)才過去)。

這次開了乙個棧,命名為recycle**站,每次刪除節點後,位址丟到**站,創造新節點時,先檢查**站裡有沒有空閒位址,有就用,沒有才在靜態記憶體空間裡找乙個位址分配。這樣空間複雜度變為了o(2n),降低了很多(實際上從4.31mb降到了2.21mb)。

不過感覺回頭還是學一下動態分配吧...

洛谷P2286 寵物收養場 Treap

一家寵物收養場會陸續到來一些收養人和寵物。每個收養人個寵物都有乙個權值k kk。如果某個時刻收養人多於寵物,那麼新進來乙個寵物就會選擇權值與自己最接近的收養人,若有兩個收養人的權值分別 為k a k a k a,k a k a,k a,那麼寵物將選擇權值小的收養人。當收養人少於寵物時,收養人就會選擇...

洛谷P2286 HNOI2004 寵物收養場

凡凡開了一間寵物收養場。收養場提供兩種服務 收養被主人遺棄的寵物和讓新的主人領養這些寵物。每個領養者都希望領養到自己滿意的寵物,凡凡根據領養者的要求通過他自己發明的乙個特殊的公式,得出該領養者希望領養的寵物的特點值a a是乙個正整數,a 2 31 而他也給每個處在收養場的寵物乙個特點值。這樣他就能夠...

洛谷P2286 HNOI2004 寵物收養場

凡凡開了一間寵物收養場。收養場提供兩種服務 收養被主人遺棄的寵物和讓新的主人領養這些寵物。每個領養者都希望領養到自己滿意的寵物,凡凡根據領養者的要求通過他自己發明的乙個特殊的公式,得出該領養者希望領養的寵物的特點值a a是乙個正整數,a 2 31 而他也給每個處在收養場的寵物乙個特點值。這樣他就能夠...