日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HDU1569 方格取数(2)(二分图带权最大独立集 - 最小割应用)

發布時間:2024/4/18 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU1569 方格取数(2)(二分图带权最大独立集 - 最小割应用) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接

結論

∣帶權最大獨立集∣=∣點權之和∣?∣最小割∣=∣點權之和∣?∣最大流∣|帶權最大獨立集| = |點權之和| - |最小割| = |點權之和| - |最大流|=?=?

思路

黑白染色之后建圖,源點SSS到黑點建對應權值邊,白點到匯點TTT建對應取值邊,黑點到相鄰的白點建infinfinf邊,然后求得的最大流,就是將黑白分開的最小割。

#include <bits/stdc++.h> #define LL long long #define P pair<int, int> #define lowbit(x) (x & -x) #define mem(a, b) memset(a, b, sizeof(a)) #define mid ((l + r) >> 1) #define lc rt<<1 #define rc rt<<1|1 #define endl '\n' const int maxn = 50 + 5; const int inf = 0x3f3f3f3f; const int mod = 1e9 + 7; using namespace std; struct ac{int v, c, pre; }edge[maxn<<8]; int s, e; int head[maxn<<8], dis[maxn<<6], curedge[maxn<<8], cnt; void init() {mem(head, -1);cnt = 0; } void addedge(int u, int v, int c) { // 記得雙向邊edge[cnt] = {v, c, head[u]};head[u] = cnt++; } bool bfs() {queue<int> que;que.push(s);mem(dis, 0);dis[s] = 1;while (!que.empty()) {int f = que.front();que.pop();for (int i = head[f]; i != -1; i = edge[i].pre) {if (dis[edge[i].v] || edge[i].c == 0) continue;dis[edge[i].v] = dis[f] + 1;que.push(edge[i].v);}}return dis[e] > 0; }int dfs(int now, int flow) {if (now == e || flow == 0) return flow;for (int &i = curedge[now]; i != -1; i = edge[i].pre) { // 當前弧優化if (dis[edge[i].v] != dis[now] + 1 || edge[i].c == 0) continue;int d = dfs(edge[i].v, min(flow, edge[i].c));if (d > 0) {edge[i].c -= d;edge[i^1].c += d;return d;} }dis[now] = -1; // // 炸點優化return 0; } int Dinic() {int sum = 0, d;while (bfs()) {for (int i = 0; i <= e; ++i) curedge[i] = head[i];while (d = dfs(s, inf)) sum += d;}return sum; }int a[maxn][maxn]; int main () {ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);int n, m;while (cin >> n >> m) {init();int sum = 0;for (int i = 0; i < n; ++i) {for (int j = 0; j < m; ++j) {cin >> a[i][j];sum += a[i][j];}}s = 0, e = n * m + 1;for (int i = 0; i < n; ++i) {for (int j = 0; j < m; ++j) {if ((i + j) % 2 == 0) {addedge(s, i*m+j+1, a[i][j]);addedge(i*m+j+1, s, 0);for (int k = -1; k <= 1; ++k) {for (int h = -1; h <= 1; ++h) {if (abs(k) + abs(h) != 1) continue;int x = i + k;int y = j + h;if (x < 0 || y < 0 || x >= n || y >= m) continue;if ((x + y) % 2 == 0) continue;addedge(i*m+j+1, x*m+y+1, inf);addedge(x*m+y+1, i*m+j+1, 0);}}}else {addedge(i*m+j+1, e, a[i][j]);addedge(e, i*m+j+1, 0);} }}int ans = sum - Dinic();cout << ans << endl;}return 0; }

總結

以上是生活随笔為你收集整理的HDU1569 方格取数(2)(二分图带权最大独立集 - 最小割应用)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 精品视频在线观看一区 | 欧美性生活视频 | 国产成人网 | 欧美成人天堂 | 精品人妻伦一二三区久久 | 夜夜嗨aⅴ一区二区三区 | 美女扒开尿口让男人捅爽 | 欧美性猛交xxxx黑人猛交 | 在线观看黄 | 99热精品免费 | 成人tv| 日韩一级片网址 | av最新天| 91亚洲国产成人精品一区二三 | 69av网| 香蕉视频在线观看免费 | 在线观看黄色av网站 | 麻豆免费在线播放 | 欧美成人影院 | 亚洲图片在线观看 | 国内精品久久久 | 免费看a| 国产日韩一区二区三区在线观看 | 精品视频一区二区三区四区 | 色狠狠av | 亚洲色图导航 | 国产午夜不卡 | 性xxxx欧美老肥妇牲乱 | 亚洲精品久久久久久久久久久 | 日韩久久一区 | 国产91在线播放九色 | 中文字幕视频 | 亚洲一区二区三区四区电影 | 老司机深夜视频 | 国产精品自拍合集 | 亚洲综合色一区 | 午夜激情国产 | 精品一区二区在线免费观看 | 国产真实乱在线更新 | 亚洲欧美专区 | 超碰碰碰碰 | 在线免费观看污 | 一起射导航 | 亚洲精品乱码久久久久久日本蜜臀 | 日本久久综合 | 精品成人久久久 | 精品福利三区3d卡通动漫 | 精品免费囯产一区二区三区 | 欧美日韩一二三区 | 久青草视频 | 驯服少爷漫画免费观看下拉式漫画 | 久久九九精品视频 | 特级av| 色五丁香 | 一级黄大片 | 粗大黑人巨茎大战欧美成人 | 娇妻被肉到高潮流白浆 | 亚洲综合福利 | 内射国产内射夫妻免费频道 | 成年人黄色免费网站 | 午夜视频在线观看国产 | 体内射精一区二区 | 精品国产精品网麻豆系列 | 国内精品久久久久久久久久 | 国产精品av在线播放 | 中文字幕你懂的 | 日本理伦片午夜理伦片 | 欧美巨乳美女 | 碰碰97 | 免费a视频| 久久精品视频国产 | 操操操日日日 | 久久人妻少妇嫩草av蜜桃 | www一区| 人人爽爽人人 | 国产成人福利 | 雪白的扔子视频大全在线观看 | 国产精品99无码一区二区视频 | 一区二区欧美视频 | av免费视屏 | 搡老熟女国产 | 欧美高清视频一区二区 | 72成人网| 无码人妻丰满熟妇啪啪 | 精品人妻伦一二三区久久 | 影音先锋中文字幕在线播放 | 天天干天天舔 | 伊人导航| 国产女人18毛片水真多1 | 免费a级片在线观看 | 成人精品在线看 | 亚洲av综合av一区二区三区 | 国产愉拍 | 亚洲高清在线视频 | 国产成人精品一区二区无码呦 | 久久1024| 欧美啪啪小视频 | 午夜影院h| 午夜日韩电影 |