Bzoj 2127 happiness 最小割

happiness

题解:

将图转换成最小割.

将割完的图中与S相连的点看做选文科, 与T相连的点看做选理科.

flow(s, u) = 文科值

flow(u,t) = 理科值

假设u 和 v 一起选文科有奖励值z,  flow(s,u) = z/2  flow(s,v) = z/2, flow(u,v) = z/2

假设u 和 v 一起选理科有奖励值z,  flow(u,t) = z/2  flow(v,t) = z/2, flow(u,v) = z/2

然后合并边.

具体理解可以画图看最小割之后的模型.

剩下的图才是价值.

#include<bits/stdc++.h>
using namespace std;
#define Fopen freopen("_in.txt","r",stdin); freopen("_out.txt","w",stdout);
#define LL long long
#define ULL unsigned LL
#define fi first
#define se second
#define pb push_back
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define lch(x) tr[x].son[0]
#define rch(x) tr[x].son[1]
#define max3(a,b,c) max(a,max(b,c))
#define min3(a,b,c) min(a,min(b,c))
typedef pair<int,int> pll;
const int inf = 0x3f3f3f3f;
const int _inf = 0xc0c0c0c0;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const LL _INF = 0xc0c0c0c0c0c0c0c0;
const LL mod =  (int)1e9+7;
int a[6][105][105];
int n, m;
struct FFFlow{const static int N = 105*105;static const int M = N << 3;int head[N], deep[N], cur[N];int w[M], to[M], nx[M];int tot;void add(int u, int v, int val){w[tot]  = val; to[tot] = v;nx[tot] = head[u]; head[u] = tot++;//        w[tot] = 0; to[tot] = u;
//        nx[tot] = head[v]; head[v] = tot++;
    }void Eadd(int u, int v, int val, int p){add(u, v, val);add(v, u, val * p);}int bfs(int s, int t){queue<int> q;memset(deep, 0, sizeof(deep));q.push(s);deep[s] = 1;while(!q.empty()){int u = q.front();q.pop();for(int i = head[u]; ~i; i = nx[i]){if(w[i] > 0 && deep[to[i]] == 0){deep[to[i]] = deep[u] + 1;q.push(to[i]);}}}return deep[t] > 0;}int Dfs(int u, int t, int flow){if(u == t) return flow;for(int &i = cur[u]; ~i; i = nx[i]){if(deep[u]+1 == deep[to[i]] && w[i] > 0){int di = Dfs(to[i], t, min(w[i], flow));if(di > 0){w[i] -= di, w[i^1] += di;return di;}}}return 0;}int Dinic(int s, int t){int ans = 0, tmp;while(bfs(s, t)){for(int i = 0; i <= t; i++) cur[i] = head[i];while(tmp = Dfs(s, t, inf)) ans += tmp;}return ans;}void init(){memset(head, -1, sizeof(head));tot = 0;}}Flow;
int main(){Flow.init();scanf("%d%d", &n, &m);int ans = 0;for(int k = 0; k < 6; ++k){int x = n, y = m;if(k == 2 || k == 3) --x;if(k == 5 || k == 4) --y;for(int i = 1; i <= x; ++i)for(int j = 1; j <= y; ++j){scanf("%d", &a[k][i][j]);ans += a[k][i][j];}}int s = 0, t = n * m + 1;for(int i = 1; i <= n; ++i){for(int j = 1; j <= m; ++j){Flow.Eadd(s, (i-1)*m + j, a[0][i][j] * 2 + a[2][i-1][j] + a[2][i][j] + a[4][i][j-1] + a[4][i][j], 0);Flow.Eadd((i-1)*m + j, t, a[1][i][j] * 2 + a[3][i-1][j] + a[3][i][j] + a[5][i][j-1] + a[5][i][j], 0);if(i > 1) Flow.Eadd((i-1)*m+j, (i-2)*m+j, a[2][i-1][j] + a[3][i-1][j], 1);if(j > 1) Flow.Eadd((i-1)*m+j, (i-1)*m+j-1, a[4][i][j-1] + a[5][i][j-1], 1);}}ans -= Flow.Dinic(s, t) / 2;printf("%d\n", ans);return 0;
}
View Code

  

转载于:https://www.cnblogs.com/MingSD/p/11254013.html

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

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

相关文章

C中静态存储区和动态存储区

c语言中需要内存来存放数据。而内存主要分为两类&#xff1a;静态存储区和动态存储区。 1、静态存储区 &#xff08;1&#xff09;分为数据区&#xff08;只读数据区&#xff08;代码区&#xff1f;在linux中又叫文本段.text&#xff09;、读写数据区.data&#xff09;、未初始…

POJ 1149 最大流建图 PIGS

题意&#xff1a; 给出猪圈个数 m 和买家人数 n 然后给出m个猪圈的猪的头数.. 接下来 n 行.. 给出mm a1 a2 .. a(mm) k 例如 2 1 5 3 表示第i1个用户 有mm(2) 个猪圈的钥匙 就是有第 a1(1) 个和第 a2(5) 个猪圈的钥匙..还想要买得k头猪.. 问最多能够卖出多少头.. 思路&#xff…

【编译打包】tengine 1.5.2

tengine 官方没有提供rpm包&#xff0c;应网友要求&#xff0c;本文继续提供SRPM 包去掉了不相关的模块&#xff0c;支持平台为 rhel6 系列&#xff0c;适用于Web&#xff0c;LB&#xff0c;cache等场合。编译参数如下./configure \--prefix%{_sysconfdir}/nginx \--sbin-path%…

ARM通识——ARM的7种基本工作模式、37个通用寄存器

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 一、ARM采用32位架构 ARM约定一个Byte是8 bits&#xff0c;一个Halfword是16 bits (2 byte)&#xff0c;一个Word是32 bits (4 byte)。 大部分ARM core 提供ARM 指令集&#xff08;32 bit&#xff0…

软件测试工程师核心竞争力(转)

说明&#xff1a;总结整理来源于网络&#xff0c;并非独立原创 1、传统测试工程师应具备的核心竞争力1.1 测试策略设计能力测试策略设计能力是指&#xff1a;对于各种不同的被测软件&#xff0c;能够快速准确地理解需求&#xff0c;并在有限的时间和资源下&#xff0c;明确测试…

以NFS方式挂载rootfs的设置方法

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 更多详细内容&#xff0c;见Linux中NFS服务器的配置(/etc/export)_天糊土的博客-CSDN博客 网络文件系统&#xff08;NFS&#xff0c;network file system&#xff09;&#xff0c;是一种网络通讯协…

cocos2dx xcode5 创建项目

我的开发环境MacBook Pro OS X 10.9.1&#xff0c;Xcode5。 下载cocos2dx并解压&#xff0c;我使用的版本是2.2.1&#xff0c;3.0beta版本还没出来。 终端cd到cocos2d-x-2.2.1/tools/project-creator&#xff0c;我的全路径是/Users/HanHongmin/Documents/cocos2d-x-2.2.1/too…

poj 3660(floyd 变形)

题意&#xff1a; 有N头牛&#xff0c;每头牛都会有比他强的或者弱的牛&#xff0c;按照牛的强弱排序&#xff0c;问有几头牛的位置是确定的。 5 5&#xff08;n,m&#xff09; 4 3 4 2 3 2 1 2 2 5则4>3>2>5 && 1>2>5故只有2,5是确定的。 1 #include &…

分析根文件系统中的/linuxrc文件(附带busybox的介绍)

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 参考博客 init进程的详解_天糊土的博客-CSDN博客_init进程 busybox详解_linuxarmsummary的博客-CSDN博客 前言 因为uboot给内核传参的bootargs中有“init/linuxrc”这个项目&#xff0c;而由前面的…

Wisconsin Squares [USACO]

这个也不记得了&#xff0c;反正不难 /* ID: zhangyc1 LANG: C TASK: wissqu */ #include <string> #include <cstring> #include <cstdlib> #include <cstdio> #include <cmath> using namespace std;char arrMatrix[4][5]; bool arrNewCow[4][…

CentOS Linux搭建SVN Server配置详解

PS&#xff1a;今天给开发的同事搭建一个公网的SVN Server&#xff0c;google一下&#xff0c;发现下面这篇最详细&#xff0c;就记录下来&#xff0c;重新排版一下。顺便根据自己的使用经验&#xff0c;补充了几个细节和总结。本文配置是基于CentOS 5.x的&#xff0c;但一样适…

bic,orr——设置某些位为0或者1

转载于http://blog.chinaunix.net/uid-28458801-id-4083986.html 一、bic &#xff08;1&#xff09;格式&#xff1a;BIC {条件} {S} 目的寄存器&#xff0c;操作数1&#xff0c;操作数2&#xff1b; &#xff08;2&#xff09;BIC指令用于清除操作数1的某些位&#xff0…

405 Method Not Allowed

当jquery easyui的datagrid插件使用.json文件为数据源&#xff0c;通过非http协议访问【就是直接拖进浏览器查看效果】&#xff0c;能正常加载.json文件并且生成datagrid数据源。但是通过http协议访问示例代码时&#xff0c;无法加载json文件生成datagrid的数据源。 这个是由于…

Eclipse之ANT使用

Ant是Java平台下非常棒的批处理命令执行程序&#xff0c;能非常方便地自动完成编译&#xff0c;测试&#xff0c;打包&#xff0c;部署等等一系列任务&#xff0c;大大提高开发效率。如果你现在还没有开始使用Ant&#xff0c;那就要赶快开始学习使用&#xff0c;使自己的开发水…

idea修改maven项目版本号

1 先安装插件 2 控制台执行命令 mvn build-helper:parse-version versions:set -DnewVersion1.1-SNAPSHOT versions:commit 1.1-SNAPSHOT 为你要修改的版本号 技术交流群&#xff1a; 816227112 有时候命令执行完看不到改变&#xff0c;需要刷新下。 转载于:https://www.cnblo…

str指令

转载于arm汇编—str指令-andyhzw-ChinaUnix博客 &#xff08;1&#xff09;格式&#xff1a;STR{条件} 源寄存器&#xff0c;<存储器地址> &#xff08;2&#xff09;STR指令用于从源寄存器中将一个32位的字数据传送到存储器中。 &#xff08;3&#xff09;指令示例&a…

【POJ】2065 SETI

题意&#xff1a;直接拿样例&#xff0c;37 abc。 a&#xff5e;z表示1&#xff5e;26&#xff0c;*表示0。 x0*1^0x1*1^1x2*1^21(mod 37) x0*2^0x1*2^1x2*2^22(mod 37) x0*3^0x1*3^1x2*3^23(mod 37) 高斯消元&#xff0c;除法x等于乘以x对p的逆元。 1 #include<cstdio>2…

几个国外开源CMS系统比较

CMS是Content Management System的缩写&#xff0c;意为"内容管理系统"。上一下度娘或者放一下Google&#xff0c;全球的CMS系统&#xff0c;不下千个&#xff0c;开源的不下百个&#xff0c;如果只是普通用户&#xff0c;很难有时间和精力去比较那么多的系统优劣。不…

用Python自动生成NBA巨星生涯数据曲线

1.序 之前写过一个用 python 自动生成球员职业生涯数据的程序(原文请关注本人公众号)&#xff0c;大家的反响很好&#xff0c;我也感到很欣慰。有问我怎么做的&#xff0c;如何学 python 的&#xff0c;也有提建议说集成到 web 里面的。 其实最开始我也是考虑到集成到 web 里面…

ldr加载指令,ldr伪指令

转载于ARM中LDR伪指令与LDR加载指令 - Leo Chin - 博客园 一、ldr作为加载指令 &#xff08;1&#xff09;格式为&#xff1a;LDR{条件} 目的寄存器&#xff0c;<存储器地址> &#xff08;2&#xff09;LDR指令用于从存储器中将一个32位的字数据传送到目的寄存器中。 …