cogs 2398 切糕 最小割

2022-05-19 22:59:00 字數 997 閱讀 9834

cogs 2398 切糕

題解:若沒有d的限制,我們建模應該是這樣的。

跑乙個最小割即可。

有了d的限制,那麼存在點對(i,j)要求i,j的割邊距離差不能超過d,假設d是1,圖應該是這樣。

如果割斷了v(1,1)是不會割斷v(2,3)的,我們假設割斷的是v(2,3)那麼此時會有一條路從v(2,2)的後繼點到達v(1,1)的後繼點,此時整張圖還沒有被割斷,而每行邊我們只割斷一條,所以這不是乙個合法的割,所以不會割斷v(2,3)。

所以就是讓第i行編號為k的點向第j行編號為k-d的點連一條inf的邊就好。

code

#include#include#includeusing namespace std;

#define fcl fclose(stdin); fclose(stdout); return 0

void read(int& x)

int p,q,r,d;

int v[50][50][50];

int s,t;

struct edgeedge[700010];

int head[64010],tot=1;

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

inline void add(int a,int b,int c)

#define ty (edge[x].to)

int cur[64010],dis[64010],que[64010];

const int inf=0x7f7f7f7f;

bool bfs()

return dis[t]!=inf;

}int dfs(int u,int a)

} return f2;

}int mincut()

return res;

}int main()

} }printf("%d\n",mincut());

fcl;

}

poj2398 計算幾何

poj2318的公升級版,只是中間的n個隔板未排序,輸出的是裝有i個玩具的區域的個數,其他完全一樣 poj2318的解題報告見 include include include include using namespace std struct point struct line line 5005...

POJ2398計算幾何

題意 和poj2318基本輸入一樣,但有一些改變。1.輸入的線沒按著從小到大的順序,所以要先排序。2.輸出要的是有1 m個點之間有多少個區間。例 有5條線,分成區域0,區域1,區域2,區域3,區域4,區域5.分別有2,1,3,5,4,0個點,所以輸出就是1 1 2 1 3 1 4 1 5 1 再有就...

CJOJ 2398 簡單的數列

簡單的數列 乙個簡單的數列問題 給定乙個長度為n的數列,求這樣的三個元素 ai,aj,ak 的個數,滿足 ai aj ak,且 i j k 第1行是乙個整數n 1 n 50000 接下來n行,每行乙個元素ai 0 ai 32767 乙個數,滿足 ai aj ak i j k 的個數。5 1 2 3 ...