P1261 伺服器儲存資訊問題 最短路

2022-09-01 10:12:12 字數 2522 閱讀 8246

byteland王國準備在各伺服器間建立大型網路並提供多種服務。

網路由n臺伺服器組成,用雙向的線連線。兩台伺服器之間最多只能有一條線直接連線,同時,每台伺服器最多只能和10臺伺服器直接連線,但是任意兩台伺服器間必然存在一條路徑將它們連線在一起。每條傳輸線都有乙個固定傳輸的速度。δ(v, w)表示伺服器v和w之間的最短路徑長度,且對任意的v有δ(v, v)=0。

有些伺服器比別的伺服器提供更多的服務,它們的重要程度要高一些。我們用r(v)表示伺服器v的重要程度(rank)。rank越高的伺服器越重要。

每台伺服器都會儲存它附近的伺服器的資訊。當然,不是所有伺服器的資訊都存,只有感興趣的伺服器資訊才會被儲存。伺服器v對伺服器w感興趣是指,不存在伺服器u滿足,r(u)>r(w)且δ(v, u)<=δ(v, w)。

舉個例子來說,所有具有最高rank的伺服器都會被別的伺服器感興趣。如果v是一台具有最高rank的伺服器,由於δ(v, v)=0,所以v只對具有最高rank的伺服器感興趣。我們定義b(v)為v感興趣的伺服器的集合。

我們希望計算所有伺服器儲存的資訊量,即所有伺服器的|b(v)|之和。byteland王國並不希望儲存大量的資料,所以所有伺服器儲存的資料量(|b(v)|之和)不會超過30n。

你的任務是寫乙個程式,讀入byteland王國的網路分布,計算所有伺服器儲存的資料量。

顯然暴力做法就是跑n

n遍單元最短路。

考慮到答案不會太大(所有伺服器儲存的資料量(∣b(

v)∣∣

b(v)

∣之和)不會超過30n3

0n),所以可以考慮對暴力演算法優化。設f[

x][i

]f[x

][i]

表示距離點x

x最近的ran

k≥ir

ank≥

i的點的距離。

那麼如果我們在跑點s

s的最短路時,最短路跑到點u

u,接下來要轉移到點v

v,但是有dis

[s][

v]v][r

ank[

s]+1

]dis

[s][

v]v][r

ank[

s]+1

],那麼就有di

s[s,

v]=d

is[s

,u]+

dis[

v,u]

≥f[r

ank[

s]+1

][v]

+dis

[u,v

]≥f[

rank

[s]+

1][u

]dis

[s,v

]=di

s[s,

u]+d

is[v

,u]≥

f[ra

nk[s

]+1]

[v]+

dis[

u,v]

≥f[r

ank[

s]+1

][u]

所以這樣顯然不會更新答案。

所以我們根本不必把v

v扔進(優先)佇列裡。

這樣就可以過了。

#include

#include

#include

#define mp make_pair

using

namespace std;

const

int n=

30010

;int n,m,tot,ans,rank[n]

,f[n][15

],dis[n]

,head[n]

;bool vis[n]

,flag[n]

;queue<

int> r[15]

;struct edge

e[n*10]

;void

add(

int from,

int to,

int dis)

void

dij_rank

(int rk)

while

(q.size()

)}}}

void

dij(

int s)

q.pop();

if(vis[u]

)continue

; vis[u]=1

;for

(int i=head[u]

;~i;i=e[i]

.next)}}

}int

main()

for(

int i=

1;i<=m;i++

)for

(int i=

10;i>=

1;i--

)for

(int i=

1;i<=n;

++i)

dij(i)

;printf

("%d"

,ans)

;return0;

}

伺服器儲存資訊問題 差分約束

下面是題面。問題描述 byteland 王國準備在各伺服器間建立大型網路並提供多種服務。網路由 n 臺伺服器組成,用雙向的線連線。兩台伺服器之間最多只能有一條線直接連線,同時,每台伺服器最多只能和 10 臺伺服器直接連線,但是任意兩台伺服器間必然存在一條路徑將它們連線在一起。每條傳輸線都有乙個固定傳...

最經濟方案 談P2P電影伺服器

最近在論壇上看到大家討論架設電影 伺服器的問題,其實這個在大中型網咖中幾乎是必備的專案之一,本人在廣州 武漢等地的數個網咖上網時都看到這些網咖已經擁有了自己的電影 伺服器,並且還請專業的 開發人員設計了一套很漂亮的頁面,不少網民來網咖也是衝著 伺服器上的電影而來,所以投資建立乙個自己的電影 伺服器現...

儲存過程 獲取連線SQL伺服器的資訊

if exists select from dbo.sysobjects where id object id n dbo p getlinkinfo and objectproperty id,n isprocedure 1 drop procedure dbo p getlinkinfo go ...