挑戰程式設計競賽(第二章 2 4 資料結構)

2021-09-24 19:30:34 字數 1715 閱讀 4899

expedition

#include

#include

#include

#include

using namespace std;

const

int max =

10001

;int n, l, p, sd, sf;

struct node*/}

;bool cmp1

(node a, node b)

struct cmp2};

node s[max]

;priority_queue

, cmp2>q;

intmain()

scanf

("%d%d"

,&sd,

&sf)

;sort

(s, s+n, cmp1)

;//end是車能夠到達距離目的地最近的距離,cnt是最大可以行進的距離,k標記下乙個遍歷的加油站編號,ans是停止次數

int end = sd-sf, cnt = sf, k =

0, ans =

0, i;

while(1

)}//如果沒有加油站可以加油且還沒有到達目的地

if(q.

empty()

)break

;//選取可以到達的加油站中油量最多的乙個

cnt +

= q.

top(

).fuel;

end = end-q.

top(

).fuel;

q.pop();

ans++;}

//cout << cnt << endl;

if(cnt>=sd)

printf

("%d\n"

, ans)

;else

printf

("-1\n");

}return0;

}

食物鏈

**:

#include

#include

using namespace std;

const

int max =

1e6+5;

int n, k, d, x, y;

int pre[max]

;int rank[max];/*

在同乙個並查集中的表示型別關係同時存在,0-n代表a型別,n-2*n代表b型別,

2*n-3*n代表c型別

*/void

init

(int n)

}int

findroot

(int x)

//路徑壓縮

int j=x, i;

while

(pre[j]

!=r)

return r;

}void

join

(int x,

int y)

else

}bool same

(int x,

int y)

intmain()

if(d==1)

//x和y屬於同一類的資訊

}else

//x吃y的資訊}}

printf

("%d\n"

, cnt)

;return0;

}

學習筆記第二章挑戰程式設計競賽2 1

挑戰程式設計競賽page.30 思路 從a0開始按順序決定每個數字加還是不加,在全部n個數都決定後再判斷它們的和是不是為k即可。因為狀態數是2n,所以複雜度為o 2n int n,a maxn k bool dfs int dep,int sum void solve 深度優先搜尋從最開始的狀態出發...

第二章 資料結構 二

知識點 trie樹 並查集,堆的操作 高效地儲存和查詢字串集合的資料結構 const int n 100010 int son n 26 cnt n idx 插入 void insert char str cnt p 以這個點結尾的字元數 查詢 intquery char str return cn...

資料結構 第二章總結

線性表是由n 0 個資料元素組成的有限序列。我們學習了線性表上定義的基本運算 有構造空表 initlist l 求表長 listlength l 取結點 getnode l i 查詢 locatenode l x 插入 insertlist l x,i 刪除 delete l i 還學習了順序表 單...