传送~

来自y_immortal学长的网络流推荐2333

建模比较神仙qwq

首先可以建立最小割模型 ->二选一

就是我们处理不同的贡献不好处理 那么我们考虑怎么把它变成相同的贡献

对于原图我们进行黑白染色 然后如果一个点属于T集我们让它反色就可以做到相同的有贡献

那么很明显这个贡献是双向的 对于两个点之间的贡献是相加的

所以我们这样做最小割就可以辣~

代码。

//Love and Freedom.
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#define inf 20021225
#define ll long long
#define M 200000
#define N 30000
using namespace std;struct edge{int to,lt,f;}e[M];
int in[N],cnt=1,dep[N];
int s,t;
void add(int x,int y,int f)
{e[++cnt].to = y; e[cnt].lt = in[x]; e[cnt].f = f; in[x] = cnt;e[++cnt].to = x; e[cnt].lt = in[y]; e[cnt].f = 0; in[y] = cnt;
}
queue<int> q;
bool bfs()
{while(!q.empty())  q.pop();memset(dep,0,sizeof(dep));dep[s] = 1; q.push(s);while(!q.empty()){int x = q.front(); q.pop();for(int i=in[x];i;i=e[i].lt){int y = e[i].to;if(!dep[y] && e[i].f){dep[y] = dep[x]+1;   q.push(y);if(dep[t])    return true;}}}return false;
}int dfs(int x,int f)
{if(x==t||!f) return f;int cur = f;for(int i=in[x];i;i=e[i].lt){int y = e[i].to;if(dep[y] == dep[x]+1 && e[i].f){int flow = dfs(y,min(cur,e[i].f));e[i].f -= flow; e[i^1].f += flow;cur -= flow; if(cur==0) return f;}}dep[x] = -1;return f-cur;
}int dinic()
{int ans = 0;while(bfs())  ans+=dfs(s,inf);return ans;
}
int n,m;
int id(int x,int y)
{return (x-1)*m + y;
}
int a[101][101];
int b[101][101];
int c[101][101];
int xx[4] = {0,0,1,-1};
int yy[4] = {1,-1,0,0};
int main()
{int fin = 0;scanf("%d%d",&n,&m);s = n*m*2; t = s+1;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){scanf("%d",&a[i][j]);if((i+j)&1)  add(s,id(i,j),a[i][j]);else add(id(i,j),t,a[i][j]);fin+=a[i][j];}for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){scanf("%d",&b[i][j]);if((i+j)&1) add(id(i,j),t,b[i][j]);else add(s,id(i,j),b[i][j]);fin+=b[i][j];}for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)scanf("%d",&c[i][j]);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)for(int k=0;k<4;k++){int x = i+xx[k], y = j+yy[k];if(x<1||y<1||x>n||y>m)    continue;int val = c[i][j] + c[x][y];add(id(i,j),id(x,y),val);fin+=c[i][j];}printf("%d\n",fin-dinic());return 0;
}

转载于:https://www.cnblogs.com/hanyuweining/p/10321871.html

BZOJ2132 圈地计划相关推荐

  1. bzoj2132: 圈地计划

    要分成两坨对吧.. 所以显然最小割 但是不兹辞啊.. 最小割是最小的啊 求最大费用怎么玩啊 那咱们就把所有费用都加起来,减掉一个最小的呗 但是两个属于不同集合的点贡献的价值是负的啊 网络流怎么跑负的啊 ...

  2. [BZOJ2132]圈地计划(最小割)

    题目描述 传送门 题解 抄黄学长的题解. 黑白染色,对于每个黑点A,S->A:W商业,A->T:W工业,对于每个白点B,S->B:W工业,B->T:W商业,对于每对有关系的两点 ...

  3. “上班那点儿事交流圈”发展计划

    "上班那点儿事交流圈"发展计划,请大家审议 各位老朋友新朋友,大家好! 新建立的"上班那点儿事交流圈"定位与发展计划,将从三个平台展开,最终成为圈友发展与起步的 ...

  4. 【bzoj2132】圈地计划 网络流最小割

    题目描述 最近房地产商GDOI(Group of Dumbbells Or Idiots)从NOI(Nuts Old Idiots)手中得到了一块开发土地.据了解,这块土地是一块矩形的区域,可以纵横划 ...

  5. BZOJ 2132 圈地计划(最小割)【BZOJ 修复工程】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2132 是 hydro 的 BZOJ ...

  6. 地球系统科学简史:理解地球复杂性的多学科探索历程

    来源:集智俱乐部 作者:Will Steffen, Katherine Richardson等人  译者:晏丽  审校:张澳  编辑:邓一雪  导语 我们的地球是一个有生命的有机体,不仅有大气.陆地. ...

  7. 种草笔记App放话:要让一万创作者月入过万

    11月28日消息,在今天的创作者开放日上,小红书对外宣布,要在未来一年内实现"让10万创作者粉丝过万"和"1万创作者月收入过万"两个目标.同时,小红书还推出了& ...

  8. Spring - Netty (整合)

      写在前面  ​ 大家好,我是作者尼恩.目前和几个小伙伴一起,组织了一个高并发的实战社群[疯狂创客圈].正在开始 高并发.亿级流程的 IM 聊天程序 学习和实战,此文是:   疯狂创客圈 Java ...

  9. 有趣题目和认知合集(持续更新)

    写写对一些算法的理解,挂几个有意思的题,可能也会挂几个板子题 算法理解偏向于能懂即可,没有严格的证明 快乐几何 [1.2]Volatile Kite 点到直线 快乐搜与暴力 [2.4]Short Co ...

最新文章

  1. python 打印执行命令的参数_python之获取命令行参数
  2. access数据类型百度百科_Access数据库属于什么数据库。
  3. NSDate与NSDateFormatter的相关用法
  4. Ansible自动化运维工具使用
  5. python-turtle库-01
  6. 路由重发布之RIP和OSPF
  7. python统计合格数_python—基本统计值计算
  8. 题目206-矩形的个数
  9. 《程序员》: Andrew Ng谈Deep Learning
  10. PHP给下载链接添加内容信息,PHP自动给文章内容添加关联链接方法和示例
  11. c语言编辑工具下载,Turbo C-Turbo C2.0-Turbo C下载 v2.0.0.0官方正式版-完美下载
  12. linux界面安装mysql_linux安装mysql可视化界面
  13. 七人表决器VHDL代码
  14. 来了!Python 官方发布了整套的中文PDF 文档(共27本)
  15. 脑机接口的商业化道路,还要走多远多长?
  16. 自定义错误页面 404.html
  17. Python量化基础:时间序列的平稳性检验
  18. rust哪家服务器便宜稳定,rust服务器选择
  19. 5 Linux系统编程之网络编程--学习笔记
  20. 网易丁磊提议统一充电接口

热门文章

  1. 一些前端面试题(一)
  2. 设置虚拟机和本机时间同步方法
  3. Dalvik VM和Java VM的区别:
  4. J2ME程序开发新手入门九大要点
  5. 构建一个计算机网络,计算机网络--网络构建(一)
  6. UVA11549计算器谜题
  7. 【Groovy】map 集合 ( map 集合遍历 | 使用 map 集合的 each 方法遍历 map 集合 | 代码示例 )
  8. 【Android 逆向】Android 进程注入工具开发 ( 调试进程中寄存器的作用 | 通过 EIP 寄存器控制程序运行 | EIP 寄存器的存档与恢复 )
  9. 【Android 插件化】Hook 插件化框架 ( 反射工具类 | 反射常用操作整理 )
  10. 【Flutter】侧拉导航栏实现 ( Drawer 组件 | PageView 组件 )