暑假寫的兩個資料結構

2022-08-17 04:09:13 字數 1350 閱讀 1467

最近翻了一下暑假的**,發現了點有用的東西。

斜堆記得是個猴子打架的題目

code

#include #include #include using

namespace std;

const

int n=100000;

int f[n+10],head[n+10],lch[n+10],rch[n+10],w[n+10];

int merge(int a,int b)

int pop(int a)

int find(int x)

int hebing(int a,int b)

int main()

int m;scanf("%d",&m);

for(int i=0;iint a,b;

scanf("%d %d",&a,&b);

if(find(a)!=find(b))

else printf("-1\n");

}return 0;

}

支援刪除和查詢的排序二叉樹樹

為了解決約瑟夫問題轉化成的資料結構問題,學長教的乙個很奇怪的資料結構(其實就是平衡樹的乙個替代品?)

code

#include #include #include #define ll long

long

using

namespace std;

const

int maxn=1000000;

ll lch[maxn<<2]=,rch[maxn<<2]=,cnt[maxn<<2]=,key[maxn<<2]=;

ll top=0;

bool kill[maxn<<2]=;

int build(ll &p,ll l,ll r)

ll dfs(ll p,ll x)

if(((x<=cnt[p])&&(!kill[key[p]])||((x0))

else tmp=dfs(rch[p],x-cnt[p]-((!kill[key[p]])?1:0));

/*tmp=(((x<=cnt[p])&&(!kill[key[p]])||((x0))?

(dfs(lch[p],x)):(dfs(rch[p],x-cnt[p]-((!kill[key[p]])?1:0)));

cnt[p]-=((x<=cnt[p])?1:0);*/

//cout<

}long

int calc(long

int n,long

int m,long

int k)

return ans;

}int main()

資料結構學習記錄 兩個陣列的合併

標頭檔案的自己先定義,便於以後呼叫 定義為t11.h include stdio.h include string.h include ctype.h include malloc.h include stdlib.h atoi exit include io.h eof include math....

資料結構與演算法(19) 和為s的兩個數字

劍指 offer 57.和為s的兩個數字 輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得它們的和正好是s。如果有多對數字的和等於s,則輸出任意一對即可。輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得它們的和正好是s。如果有多對數字的和等於s,則輸出任意一對即可。示例 1 ...

對比兩個資料庫表結構

在專案做好後實施了以後,可能因為需求等原因需要公升級,這時候一般都是在測試系統改好後在更新到正式系統.儲存過程,檢視等可以直接通過全部刪除在建立進行更新,但是表因為正式系統裡已有資料所以無法通過該方式進行更新.只能更改表結構,而這時有可能因為更改的表結構比較多,而出現有的表忘了更新.該程式可以對比兩...