[網路流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給出輸入資...