bzoj2132: 圈地计划

要分成两坨对吧。。 所以显然最小割

但是不兹辞啊。。

最小割是最小的啊 求最大费用怎么玩啊

那咱们就把所有费用都加起来,减掉一个最小的呗

但是两个属于不同集合的点贡献的价值是负的啊

网络流怎么跑负的啊

那咱就交换一下呗

原图是二分图啊,把另一部分与S和T连边的流量换一下就好啦。

 

注意哦 n和m可能为1 所以累加C的时候写成ans += C[i][j] * (4 - (i == 1 || i == n) - (j == 1 || j == m));就错啦。

要么在加边的时候累加,要么写成ans += C[i][j] * ((i != 1) + (i != n) + (j != 1) + (j != m)); 

  1 #include<cstdio>
  2 #include<cstring>
  3 #include<cstdlib>
  4 #include<algorithm>
  5 #include<iostream>
  6 #define rep(i, a, b) for(int i = (a), _end = (b); i <= _end; ++i)
  7 
  8 using namespace std;
  9 
 10 void setIO(const string& s) {
 11     freopen((s + ".in").c_str(), "r", stdin);
 12     freopen((s + ".out").c_str(), "w", stdout);
 13 }
 14 template<typename Q> Q read(Q& x) {
 15     static char c, f;
 16     for(f = 0; c = getchar(), !isdigit(c); ) if(c == '-') f = 1;
 17     for(x = 0; isdigit(c); c = getchar()) x = x * 10 + c - '0';
 18     if(f) x = -x;
 19     return x;
 20 }
 21 template<typename Q> Q read() {
 22     static Q x; read(x); return x;
 23 }
 24 
 25 // ISAP
 26 const int N = 100 * 100 + 10, M = 100 * 100 * 4 + 10, INF = ~0u >> 1;
 27 
 28 struct Edge {
 29     int to, adv;
 30     Edge *next;
 31     Edge(int to = 0, int adv = 0, Edge *next = 0) : to(to), adv(adv), next(next) {}
 32 }pool[M * 2], *pis = pool, *fir[N], *pre[N];
 33 
 34 void AddEdge(int u, int v, int w, int b = 0) {
 35     fir[u] = new(pis++) Edge(v, w, fir[u]);
 36     fir[v] = new(pis++) Edge(u, w * b, fir[v]);
 37 }
 38 
 39 Edge *inv(Edge *p) {
 40     return pool + ((p - pool) ^ 1);
 41 }
 42 
 43 int d[N], q[N], ql, qr;
 44 
 45 namespace ISAP {
 46     int n, s, t;
 47     int num[N];
 48     Edge *cur[N];
 49     
 50     void insert(int u, int dis) {
 51         if(d[u] == n) {
 52             d[u] = dis;
 53             q[qr++] = u;
 54         }
 55     }
 56     
 57     void BFS() {
 58         for(int u = 1; u <= n; u++) {
 59             d[u] = n;
 60         }
 61         ql = qr = 0;
 62         insert(t, 0);
 63         while(ql ^ qr) {
 64             int u = q[ql++];
 65             for(Edge *p = fir[u]; p; p = p->next) if(inv(p)->adv){
 66                 insert(p->to, d[u] + 1);
 67             }
 68         }
 69     }
 70     
 71     int Augment() {
 72         int a = INF;
 73         for(int u = t; u != s; u = inv(pre[u])->to) {
 74             a = min(a, pre[u]->adv);
 75         }
 76         for(int u = t; u != s; u = inv(pre[u])->to) {
 77             pre[u]->adv -= a;
 78             inv(pre[u])->adv += a;
 79         }
 80         return a;
 81     }
 82     
 83     int Maxflow() {
 84         memset(num, 0, sizeof num);
 85         BFS();
 86         for(int u = 1; u <= n; u++) {
 87             cur[u] = fir[u];
 88             num[d[u]]++;
 89         }
 90         for(int i = 1; i < d[s]; i++) {
 91             if(!num[i]) return 0;
 92         }
 93         int flow = 0;
 94         for(int u = s; d[s] < n; ) {
 95             if(u == t) {
 96                 flow += Augment();
 97                 u = s;
 98             }
 99             int ok = 0;
100             for(Edge *&p = cur[u]; p; p = p->next) if(p->adv) {
101                 int v = p->to;
102                 if(d[v] + 1 == d[u]) {
103                     pre[u = v] = p;
104                     ok = 1;
105                     break;
106                 }
107             }
108             if(!ok) {
109                 int &dis = d[u];
110                 if(!--num[dis]) break;
111                 dis = n;
112                 for(Edge *p = (cur[u] = fir[u]); p; p = p->next) if(p->adv) {
113                     dis = min(dis, d[p->to] + 1);
114                 }
115                 num[dis]++;
116                 if(u != s) u = inv(pre[u])->to;
117             }
118         }
119         return flow;
120     }
121     
122     int main(int _n, int _s, int _t) {
123         n = _n, s = _s, t = _t;
124         return Maxflow();
125     }
126 }
127 
128 int n, m;
129 
130 int encode(int x, int y) {
131     return (x - 1) * m + y;
132 }
133 
134 const int maxn = 100 + 10;
135 
136 int A[maxn][maxn], B[maxn][maxn], C[maxn][maxn];
137 
138 int main() {
139 #ifdef DEBUG
140     freopen("in.txt", "r", stdin);
141     freopen("out.txt", "w", stdout);
142 #endif
143     
144     read(n), read(m);
145     int ans = 0;
146     rep(i, 1, n) rep(j, 1, m) ans += read(A[i][j]);
147     rep(i, 1, n) rep(j, 1, m) ans += read(B[i][j]);
148     rep(i, 1, n) rep(j, 1, m) read(C[i][j]);
149     int s = n * m + 1, t = s + 1;
150     rep(i, 1, n) rep(j, 1, m) {
151         int u = encode(i, j);
152         if((i ^ j) & 1) swap(A[i][j], B[i][j]);
153         AddEdge(s, u, A[i][j]);
154         AddEdge(u, t, B[i][j]);
155         if(i < n) AddEdge(u, encode(i + 1, j), C[i][j] + C[i+1][j], 1), ans += C[i][j] + C[i+1][j];
156         if(j < m) AddEdge(u, encode(i, j + 1), C[i][j] + C[i][j+1], 1), ans += C[i][j] + C[i][j+1];
157     }
158     
159     printf("%d\n", ans - ISAP::main(t, s, t));
160     
161     return 0;
162 }
View Code

 

转载于:https://www.cnblogs.com/showson/p/5043565.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289651.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BEVFormerV2 论文阅读

论文链接 BEVFormer v2: Adapting Modern Image Backbones to Bird’s-Eye-View Recognition via Perspective Supervision 0. Abstract 提出了一种新颖的 BEV 检测器&#xff0c;具有透视监督&#xff0c;收敛速度更快&#xff0c;更适合现代图像基础架构优先考虑通过引入透…

光磁记录实现数据冷存储

通过一定强度的短脉冲可以在掺杂了钴离子的钇铁石榴石的磁性层上记录数据。据开发商介绍&#xff0c;这种新颖的光学存储机制有可能成为一种通用的、节能型数据存储技术&#xff0c;并替代现有的存储技术&#xff0c;这源于该技术能够完成超低热度的快速磁盘读写过程&#xff0…

aop在项目中的实际运用_【消防验收】防火玻璃在实际运用中的四大关键问题

扫码入群&#xff0c;与消防企业同行交流&#xff01;防火玻璃虽然开始在建筑中大量使用&#xff0c;但如何正确使用防火玻璃&#xff0c;使用哪种类型的防火玻璃&#xff0c;哪些部位可以使用防火玻璃等问题在实际运用中仍有很多盲区。同时&#xff0c;很多建设单位、设计单位…

CondenserDotNet - 使用 Kestrel 和 Consul 的 API 反向代理库!

简介CondenserDotNet - 使用 Kestrel 和 Consul 的 API 反向代理库&#xff01;特点•Consul 客户端库&#xff0c;包括服务注册、发现和配置•反向代理•交互式 UI&#xff0c;用于查看有关代理的统计信息配置示例配置遵循 LIFO 策略&#xff0c;以最后注册的配置为准var conf…

pdf转tiff

概述 基于Java&#xff0c;将pdf转成单一的tiff文件。 MAVEN依赖 <groupId>com.sun.media</groupId><artifactId>jai_codec</artifactId><version>1.1-mr</version> </dependency> <dependency><groupId>javax.media<…

配置PHP启动Apache服务报错

为什么80%的码农都做不了架构师&#xff1f;>>> 在新的服务器&#xff08;centos 6.3&#xff09;编译安装完php-5.4.8&#xff0c;再配置好php.ini和httpd.conf后&#xff0c;启动apache-2.4.3的时候&#xff0c;命令执行/usr/local/apache2/bin/apachectl start时…

嵌入式WiFi芯片价格战已经打响 MCU企业该醒悟了

在物联网万物互联的驱动下&#xff0c;无可厚非&#xff0c;嵌入式WiFi芯片市场成为了“引爆点”&#xff0c;预计2016年的总出货量将达到1亿颗。面对如此巨大的“诱惑”&#xff0c;国内外WiFi芯片企业自然干劲十足&#xff0c;本想好好大干一场。万万没想到&#xff0c;WiFi芯…

linux系统下图像处理开发板,Linux系统入门教程:五大图像处理软件

发文章时&#xff0c;总免不了要用图片说话。经过长时间的磨合&#xff0c;在Linux桌面系统下有几款图片处理软件我已经用得比较顺手了。这几款软件在Linux世界使用广泛&#xff0c;各个Linux发行版的软件仓库中都有自带的安装包&#xff0c;而且这几款软件运行稳定、界面美观。…

BZOJ1001 狼抓兔子 终于过了!

时间来不及了&#xff0c;先贴代码吧&#xff01;有时间再写。 好苦逼啊&#xff0c;WA了若干次&#xff0c;还有一次RE&#xff0c;一次TLE。 虽然主要运用的算法和资料都由师兄提供了。还是太弱了&#xff0c;太天真了。 首先&#xff0c;数据范围就WA了&#xff0c;RE了&…

如何使用GeneralUpdte构建客户端自动升级功能

一、概要本篇文章将向各位小伙伴介绍GeneralUpdate组件的使用&#xff0c;帮助第一次接触开发者快速上手应用在自己或企业项目中。如果本篇文章对您有帮助&#xff0c;希望帮忙点一下star。感谢各位开发者的支持。帮助文档讲解视频&#xff1a;https://www.bilibili.com/video/…

30道四则运算题目---课堂作业--软件工程c++

问题&#xff1a;设计一程序&#xff0c;给二年级小学生随机产生四则运算题目。 一、设计思考问题&#xff1a; 1.四则运算需要俩个运算数和一个运算符。 2.如何产生随机数? 3.如何实现随机产生四则运算&#xff1f; 4.题目是否符合小学生学习范围&#xff1f;&#xff08;减法…

javascript 函数属性prototype(转)

在JavaScript中并没有类的概念&#xff0c;但javascript中的确可以实现重载&#xff0c;多态&#xff0c;继承。这些实现其实方法都可以用JavaScript中的引用和变量作用域结合prototype来解释。 1、prototype 在JavaScript中并没有类的概念&#xff0c;但JavaScript中的确可以实…

java离职交接文档_财务人员工作交接你知道么?没处理好不止将来风险大还可能违法...

今天给大家分享一下在工作中&#xff0c;财务人员应该怎么保护自己&#xff1f;1.虚假报销那些事儿在企业内部报销程序中&#xff0c;部分管理人员往往安排下属或助理经办报销程序&#xff0c;所有的费用申请、报销单据的填写均系下属完成&#xff0c;而一旦虚假报销案件浮出水…

SQL Server 数据库没有有效所有者的三种解决办法

问题描述: 开发的过程中,操作系统出了问题,决定重装系统。但是没有将SQL Server中的数据库文件分离出来,直接将系统格了。在新系统数据库中附加了数据库文件,一切还算正常,但当打开数据库关系图的时候出现了问题,如下图所示: 针对以上问题,网上有很多解决办法,但是由…

Javascript:原型模式类继承

原型模式每个函数&#xff08;准确说不是类、对象&#xff09;都有一个prototype属性&#xff0c;这个属性是一个指针&#xff0c;指向一个对象。使用原型对象的好处是可以让所有对象实例共享它包含的属性和方法。1.原型对象&#xff08;1&#xff09;当创建一个新函数&#xf…

C# 学习经验分享

NET 20 周年的学习挑战赛刚结束了第⼀阶段&#xff0c;不知道各位⼩伙伴参加了没有&#xff1f;有⼈问现在学习 C# 是不是有点过时&#xff1f;也有⼈问现在C# 能做什么&#xff1f;更有⼈问学习 C# 能否找到⼯作 &#xff1f;或者你从不同的专家&#xff0c;不同的从业者可以有…

有限服务器延时计算_机房设备功率统计,UPS不间断电源和蓄电池的计算选择

当然了&#xff0c;也可以不用这么麻烦&#xff0c;网上有UPS计算器的&#xff0c;输入条件直接求个结果就行了。弱电笔记&#xff5c;弱电&#xff08;安防&#xff09;计算器诺&#xff0c;就上面那个&#xff01;下面进入正文&#xff1a;一个计算机机房有4台PC机&#xff0…

linux把2块盘挂到一个分区,linux系统如何挂载第二块硬盘

云主机有两块硬盘&#xff0c;第一块硬盘盘一般为10G&#xff0c;用于安装系统&#xff0c;第二块磁盘根据云主机类型不同&#xff0c;大小也不相同。我们建议您在使用的时候第二块硬盘作为数据盘&#xff0c;存放你的网站数据&#xff0c;这样在您恢复系统的时候&#xff0c;数…

Visual Studio/SQL Server系统开发常见问题归纳

问题1.在利用C Sharp(操作系统为Windows7 64位)将Excel数据导入到SQL Server 2005中时,出现如下提示: 解决办法:VS菜单栏 生成→“配置管理器→平台→新建→x86。

Xamarin效果第十八篇之GIS中复合型Mark

在前面一篇文章中简单在GIS上添加了最基础的Mark,今天再次分享一下早几天摸索的复合型Mark;啥也不说了都在效果里:1、关于数据我就是直接抓的高德的(至于后面需要的参数那就自行抓):https://restapi.amap.com/v3/airquality/aqilist?2、至于Mark无非就是用了CompositeSymbol:C…