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 ...