網路流經典模型之 牛與牛棚

2021-08-31 19:43:49 字數 1335 閱讀 8030

模型:

有n個牛棚和連線n個牛棚的m條路徑,n<=200,m<=1500。每到下雨天,牛都很討厭自己的蹄子被打濕,所以在下雨前都要躲進牛棚裡。當然,每個牛棚能容納的牛的數量有限。現在每個棚內有若干隻牛,問最短需要多少時間,使得所有牛都能躲到牛棚裡去。

解:求最短時間,可以想到二分,然後判斷可行性。

首先在原圖上求floyd,得到每兩個棚之間的最短距離。拆點:將每個棚拆為i和i'(流進的點和流出的點),添邊(i,i',inf)。增加源點s和匯點t,從s連邊到i,容量為該棚現在的牛的數量,i'連邊到t,容量為該棚的容量。接下來最關鍵的地方:若棚i和棚j之間的距離不大於t,則連邊(i,j',inf),(j,i',inf)。仔細想想為什麼不是(i',j,inf)和(j',i,inf)。因為棚i的牛要跑到棚j去避雨,顯然是從i棚的入點到j棚的出點。

求最大流,若從s發出的邊均滿流,則在low和mid中搜尋;否則在mid和high中搜尋。

#include #include #include using namespace std;

const int inf = 0x3f3f3f3f;

const int maxv = 205*2;

const int maxe = maxv*maxv*2;

int f,p;

int num[maxv],c[maxv];

long long g[maxv][maxv];

int sum;

struct edge

;edge e[maxe];

int head[maxv],edgenum;

int now[maxv],d[maxv],vh[maxv],pre[maxv],preh[maxv];

void addedge(int a,int b,int c)

void init()

int sap(int s,int t,int n) //源點,匯點,結點總數

while(x!=s);}}

else

}++vh[d[x]];

if(x != s)

x = pre[x];}}

return ans;

}void floyd()

else

low = mid + 1;

}return ans;

}int main()

for(i = 0; i < p; i++)

floyd();

printf("%lld\n",solve());

return 0;

}

網路流模板與經典模型

1.模板 dinic模板 常規的最大流模板,演算法效率能滿足大部分題 include include include includeusing namespace std define ll long long const ll n 10007 const ll m 200007 const ll ...

卷積神經網路 經典神經網路模型之VGG 16

vgg 16其中的16含義為 含有權重引數的有16層,共包含引數約為1.38億,這是乙個相當大的網路。但是其網路結構很規整簡潔,沒有那麼多的超引數,專注於構建簡單的網路結構 都是幾個卷積層後面跟乙個最大池化層 通過不斷的加深網路結構來提公升效能 但是由此也會帶來訓練的特徵數量非常大的缺點。其網路結構...

經典詞嵌入與神經網路語言模型的對比研究

摘要 本文將對nnlm,c m,rnnlm,cbow,skip gram等經典神經網路語言模型進行介紹,對比分析這些模型的結構和特點,並對神經網路語言模型的構造方法進行討論。自然語言處理是實現人工智慧的重要途徑,從計算機被創造開始,自然語言處理就是計算機學家們的研究重點。語言模型是為了使計算機理解自...