cogs 734 網路流24題 方格取數問題

2021-07-29 22:28:00 字數 1638 閱讀 2986

[網路流24題] 方格取數問題

★★☆ 輸入檔案:grid.in 輸出檔案:grid.out 簡單對比

時間限制:1 s 記憶體限制:128 mb

«問題描述:

在乙個有m*n 個方格的棋盤中,每個方格中有乙個正整數。現要從方格中取數,使任

意2 個數所在方格沒有公共邊,且取出的數的總和最大。試設計乙個滿足要求的取數演算法。

«程式設計任務:

對於給定的方格棋盤,按照取數要求程式設計找出總和最大的數。

«資料輸入:

由檔案grid.in提供輸入資料。檔案第1 行有2 個正整數m和n,分別表示棋盤的行數

和列數。接下來的m行,每行有n個正整數,表示棋盤方格中的數。

«結果輸出:

程式執行結束時,將取數的最大總和輸出到檔案grid.out中。

輸入檔案示例 輸出檔案示例

grid.in

3 3

1 2 3

3 2 3

2 3 1

grid.out 11

【分析】

好題好題。費用流好題。機智的黑白染色二分圖

【**】

//cogs 734. [網路流24題] 方格取數問題

#include

#include

#include

#include

#define inf 1e9+7

#define p(i,j) (i-1)*m+j

#define fo(i,j,k) for(i=j;i<=k;i++)

using

namespace

std;

queue

q;const

int mxn=100005;

int n,m,cnt,ans,s,t,tot;

int head[mxn],dis[mxn];

struct node f[mxn<<2];

inline

void add(int u,int v,int flow)

inline

bool bfs()

}if(dis[t]>0) return

1; return0;}

inline

int find(int u,int low)

}if(!sum) dis[u]=-1;

return sum;

}int main()

else add(s,tmp,x);

if(i>1) k1=p(i-1,j);else k1=0;

if(i1,j);else k2=0;

if(j>1) k3=p(i,j-1);else k3=0;

if(j1);else k4=0;

if(k1) add(tmp,k1,inf);

if(k2) add(tmp,k2,inf);

if(k3) add(tmp,k3,inf);

if(k4) add(tmp,k4,inf);

}while(bfs())

tot-=find(s,inf);

printf("%d\n",tot);

return0;}

//1 2

//1 2

COGS461 網路流24題 餐巾

問題描述 乙個餐廳在相繼的n天裡,第i天需要ri塊餐巾 i l,2,n 餐廳可以從三種途徑獲得餐巾。1 購買新的餐巾,每塊需p分 2 把用過的餐巾送到快洗部,洗一塊需m天,費用需f分 f 3 把餐巾送到慢洗部,洗一塊需n天 n m 費用需s分 s在每天結束時,餐廳必須決定多少塊用過的餐巾送到快洗部,...

Cogs 729 網路流24題 圓桌聚餐

網路流24題 圓桌聚餐 輸入檔案 roundtable.in 輸出檔案 roundtable.out 評測外掛程式 時間限制 1 s 記憶體限制 128 mb 問題描述 假設有來自m 個不同單位的代表參加一次國際會議。每個單位的代表數分別為 ri i 1,2,3 m 會議餐廳共有n張餐桌,每張餐桌可...

COGS746 網路流24題 騎士共存

騎士共存問題 問題描述 在乙個n n個方格的西洋棋棋盤上,馬 騎士 可以攻擊的棋盤方格如圖所示。棋盤 上某些方格設定了障礙,騎士不得進入。程式設計任務 對於給定的n n個方格的西洋棋棋盤和障礙標誌,計算棋盤上最多可以放置多少個騎 士,使得它們彼此互不攻擊。資料輸入 由檔案knight.in給出輸入資...