傳送門
考慮一下,答案就是全域性和減去捨棄和
不難發現,如果我們按行數+列數的奇偶性分為兩類,那麼每一類中的數必然互不相鄰
那麼我們把原圖的點分為黑點和白點兩類,原地向白點連邊,黑點向匯點連邊,容量為點權,然後白點向相鄰的黑點連邊
考慮一下,不能有相鄰的,就是在殘留網路中不能有$s->u->v->t$這一條路徑,那麼肯定要在某乙個地方割掉。然後要求和最大,所以求得是最小割
然後最小割等於最大流,求一下最大流即可
1//minamoto
2 #include3 #include4 #include5 #include6
#define inf 0x3f3f3f3f
7using
namespace
std;
8#define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?eof:*p1++)
9char buf[1
<<21],*p1=buf,*p2=buf;
10 inline int
read()
20const
int n=10005,m=100005;21
int dx=,dy=;
22int ver[m],next[m],edge[m],head[n],dep[n],cur[n],tot=1;23
intn,m,s,t,ans;
24 queueq;
25 inline void add(int u,int v,int
e)29
bool
bfs()42}
43}44return
false;45
}46int dfs(int u,int
limit)56}
57return
flow;58}
59int
dinic()
64int
main()
73for(int i=1;i<=n;++i)
74for(int j=1;j<=m;++j)
75if((i+j)&1)82
}83 printf("
%d\n
",ans-dinic());
84return0;
85 }
洛谷P2774 方格取數問題
洛谷p2774方格取數問題 題目鏈結 將題目反著考慮,假設現在所有數都取,需要刪掉一部分數,使得剩下的數沒有公共邊且刪掉的數之和最小。容易發現,兩個位置有公共邊當且僅當他們橫縱座標的和的奇偶性不同。建立乙個二分圖,左邊為座標和為奇數的點,右邊為座標和為偶數的點,將左右兩邊存在公共邊的點連起來。s向左...
洛谷 P2774 方格取數問題
通過題目描述我們可以很明顯的看出要通過二分圖建模,二分圖求最大獨立點集很容易,就是建立二分圖求n 最小割,然而這裡加入了權值,而且權值是在點上的,那麼我們對於每個點連一條到源點或匯點的容量等於權值的邊,求最小割即可,見胡伯濤 include include include include inclu...
洛谷P2774 方格取數問題
題目鏈結 將題目反著考慮,假設現在所有數都取,需要刪掉一部分數,使得剩下的數沒有公共邊且刪掉的數之和最小。容易發現,兩個位置有公共邊當且僅當他們橫縱座標的和的奇偶性不同。建立乙個二分圖,左邊為座標和為奇數的點,右邊為座標和為偶數的點,將左右兩邊存在公共邊的點連起來。s向左邊的每個點建邊,權值為點的權...