P2774 方格取數問題

2022-03-30 07:06:27 字數 807 閱讀 2083

對棋盤黑白染色,源點向黑點連邊,匯點向白點連邊,權值均為這個點的權值。

然後所有的黑點向白點連一條\(inf\)的邊。

這樣求出的最小割一定會割掉與源點和匯點相連的邊,割掉這條邊相當於不選這個點。

所以最後答案就是所有點的權值-最小割。

#include#include#include#include#define r register int

using namespace std;

namespace luitaryi const int n=10010,m=50010,inf=1e9;

int n,m,s,t,cnt=1,sum;

int vr[m<<1],nxt[m<<1],w[m<<1],fir[n],cur[n],d[n];

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

inline void add(int u,int v,int ww)

inline bool bfs()

} return d[t]>0;

}inline int dfs(int u,int f)

} return f-res;

}inline void dinic()

inline bool ck(int i,int j)

inline void lnk(int i,int j)

inline void main()

dinic(); printf("%d\n",sum);

}} signed main()

2019.08.19

81

P2774 方格取數問題

題目描述 在乙個有 m n 個方格的棋盤中,每個方格中有乙個正整數。現要從方格中取數,使任意 2 個數所在方格沒有公共邊,且取出的數的總和最大。試設計乙個滿足要求的取數演算法。對於給定的方格棋盤,按照取數要求程式設計找出總和最大的數。輸入格式 第 1 行有 2 個正整數 m 和 n,分別表示棋盤的行...

P2774 方格取數問題

none 在乙個有 m n 個方格的棋盤中,每個方格中有乙個正整數。現要從方格中取數,使任意 2 個數所在方格沒有公共邊,且取出的數的總和最大。試設計乙個滿足要求的取數演算法。對於給定的方格棋盤,按照取數要求程式設計找出總和最大的數。輸入格式 第 1 行有 2 個正整數 m 和 n,分別表示棋盤的行...

P2774 方格取數問題

傳送門 考慮一開始把所有點都選了,再放棄一些點使得選擇合法 考慮求出最小的放棄掉的價值 看到棋盤先黑白染色冷靜一下 從 s 向所有黑點連一條流量為點權的邊,如果滿流表示我放棄這個點的價值 從所有白點向所有 t 連邊,如果滿流說明我放棄這個點的價值 從所有黑點 x 向它四個方向的四個白點 a,b,c,...