CCF CSP題解 201403 4 無線網路

2022-07-20 04:06:10 字數 1100 閱讀 8404

新建不超過\(k\)個無線路由器,求使路由器1、2連通最少的中間路由器。

首先常規建圖,將相距不超過\(r\)的路由器(包括新建的)相連。

想到了分層\(dijkstra\)。類似的,作\(bfs\)時記錄已經經過的新建路由器個數\(b\)。\(queue\)內節點的形式就是當前路由器編號、經過的新建路由器個數、經過的路由器個數:\(\)。\(vis[a][b]\)陣列可以不包括第三維\([dis]\),因為\(queue\)中的\(dis\)是遞增的,再次到達\([a][b]\)的狀態時,不會產生更好的結果。也可以加上,\(dis\)最多為100,200*100*100不會超時。

#includeconst int maxn = 100;

const int maxm = 100;

using namespace std;

int n, m, k;

double r;

struct tnode

;tnode node[maxn + maxm + 10];

int to[(maxn + maxm) * (maxn + maxm) * 2 + 10];

int nex[(maxn + maxm) * (maxn + maxm) * 2 + 10];

int head[maxn + maxm + 10], cnt = 0;

void addedge(int x, int y)

int vis[maxn + maxm + 10][maxm + 10];

struct tnnode

};int main()

memset(head, -1, sizeof(head));

for (int i = 1; i <= n + m; i++)

}memset(vis, 0, sizeof(vis));

queueq;

q.push(tnnode(1, 0, 0));

vis[1][0] = 1;

while (true)

for (int i = head[a]; i != -1; i = nex[i])

}else}}

}return 0;

}

CCF CSP 201403 4 無線網路

問題描述 目前在乙個很大的平面房間裡有 n 個無線路由器,每個無線路由器都固定在某個點上。任何兩個無線路由器只要距離不超過 r 就能互相建立網路連線。除此以外,另有 m 個可以擺放無線路由器的位置。你可以在這些位置中選擇至多 k 個增設新的路由器。你的目標是使得第 1 個路由器和第 2 個路由器之間...

CCF CSP題解 201512 4 送貨

求字典序最小尤拉路。似乎不能用 fluery 演算法 o e 2 fluery 演算法的思路是 延申的邊盡可能不是除去已走過邊的圖的橋 割 每走一步都要判斷是否是割,應當會超時。採用 hierholzer 演算法 o v e 亦稱逐步插入迴路法。思路見 注意根據題意,每次選取未走過頂點最小的邊延申。...

ccf csp 歷年真題題解

更新中 ccf csp 2013冬季真題題解 ccf csp 2014春季真題題解 ccf csp 2014秋季真題題解 ccf csp 2014冬季真題題解 ccf csp 2015春季真題題解 ccf csp 2015秋季真題題解 ccf csp 2015冬季真題題解 ccf csp 2016春...