思路:

求出每行的和  sum_row

每列的和   sum_line

二分最后的答案mid

S->i  流量[sum_row[i]-mid,sum_row[i]+mid]

i->n+j 流量[L,R]

n+j->T 流量 [sum_line[i]-mid,sum_line[i]+mid]

套用有上下界的网络流 判一下就好了..

这是道有上下界网络流的裸题

//By SiriusRen
#include <queue>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=,M=;
int n,m,a[N][N],sum_row[N],sum_line[N],L,R;
struct Dinic{
int first[N*],next[M],v[M],w[M],vis[N*],tot,T,SS,TT,jy,du[N*],all;
void Add(int x,int y,int z){w[tot]=z,v[tot]=y,next[tot]=first[x],first[x]=tot++;}
void add(int x,int y,int z){Add(x,y,z),Add(y,x,);}
bool tell(){
memset(vis,-,sizeof(vis)),vis[SS]=;
queue<int>q;q.push(SS);
while(!q.empty()){
int t=q.front();q.pop();
for(int i=first[t];~i;i=next[i])
if(vis[v[i]]==-&&w[i])
vis[v[i]]=vis[t]+,q.push(v[i]);
}return vis[TT]!=-;
}
int zeng(int x,int y){
if(x==TT)return y;
int r=;
for(int i=first[x];~i&&y>r;i=next[i])
if(vis[v[i]]==vis[x]+&&w[i]){
int t=zeng(v[i],min(y-r,w[i]));
w[i]-=t,w[i^]+=t,r+=t;
}
if(!r)vis[x]=-;
return r;
}
int flow(){
int ans=;
while(tell())while(jy=zeng(SS,0x3f3f3f3f))ans+=jy;
return ans;
}
bool check(int x){
memset(first,-,sizeof(first)),
all=tot=,T=n+m+,SS=n+m+,TT=n+m+,
memset(du,,sizeof(du));
add(T,,0x3f3f3f3f);
for(int i=;i<=n;i++)add(,i,*x),du[i]+=sum_row[i]-x,du[]-=sum_row[i]-x;
for(int i=;i<=m;i++)add(i+n,T,*x),du[T]+=sum_line[i]-x,du[i+n]-=sum_line[i]-x;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
add(i,j+n,R-L),du[j+n]+=L,du[i]-=L;
for(int i=;i<=T;i++){
if(du[i]>)add(SS,i,du[i]),all+=du[i];
else add(i,TT,-du[i]);
}if(flow()>=all)return ;
return ;
}
}d;
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++){
scanf("%d",&a[i][j]);
sum_row[i]+=a[i][j];
sum_line[j]+=a[i][j];
}
scanf("%d%d",&L,&R);
int l=,r=,ans=;
while(l<=r){
int mid=(l+r)>>;
if(d.check(mid))r=mid-,ans=mid;
else l=mid+;
}printf("%d\n",ans);
}

BZOJ 2406 二分+有上下界的网络流判定的更多相关文章

  1. BZOJ 3876 有上下界的网络流

    思路: 套用有上下界的网络流 就好了   (这算是裸题吧) 比如 有条 x->y 的边  流量上限为R 下限为L 那么du[x]-=L,du[y]+=L 流量上限变成R-L du[x]>0 ...

  2. 【BZOJ2406】矩阵 二分+有上下界的可行流

    [BZOJ2406]矩阵 Description Input 第一行两个数n.m,表示矩阵的大小. 接下来n行,每行m列,描述矩阵A. 最后一行两个数L,R. Output 第一行,输出最小的答案: ...

  3. ACM/ICPC 之 有流量上下界的网络流-Dinic(可做模板)(POJ2396)

    //有流量上下界的网络流 //Time:47Ms Memory:1788K #include<iostream> #include<cstring> #include<c ...

  4. SGU 194. Reactor Cooling(无源汇有上下界的网络流)

    时间限制:0.5s 空间限制:6M 题意: 显然就是求一个无源汇有上下界的网络流的可行流的问题 Solution: 没什么好说的,直接判定可行流,输出就好了 code /* 无汇源有上下界的网络流 * ...

  5. 【ZOJ2314】Reactor Cooling(有上下界的网络流)

    前言 话说有上下界的网络流好像全机房就我一个人会手动滑稽,当然这是不可能的 Solution 其实这道题目就是一道板子题,主要讲解一下怎么做无源无汇的上下界最大流: 算法步骤 1.将每条边转换成0~u ...

  6. ZOJ 2314 有上下界的网络流

    problemCode=2314">点击打开链接 题意:给定m条边和n个节点.每条边最少的流量和最多的流量.保证每一个节点的出入流量和相等,问能够形成吗,能够则输出每条边的流量 思路: ...

  7. poj_2396 有上下界的网络流

    题目大意 一个mxn的矩阵,给出矩阵中每一行的和sh[1,2...m]以及每一列的数字的和目sv[1,2...n],以及矩阵中的一些元素的范围限制,比如a[1][2] > 1, a[2][3] ...

  8. 【BZOJ2502】清理雪道 有上下界的网络流 最小流

    [BZOJ2502]清理雪道 Description        滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场可以看作一个有向无环图,每条弧代表一个斜坡(即雪道),弧的方向代表斜坡下降 ...

  9. 【2018沈阳赛区网络预选赛J题】Fantastic Graph 【有上下界的网络流】

    要补的题太多了导致最近没写博客(好吧是我懒) 题目链接https://nanti.jisuanke.com/t/31447 题意 给出一个二分图,问能否挑选出一些边,使得每个点的度数都在[L,R]这个 ...

随机推荐

  1. SWING界面

    import java.awt.FlowLayout;import javax.swing.*;import java.awt.Container; public class kk extends J ...

  2. Spring Web MVC常用配置汇总

    pom.xml ============================================================================================ ...

  3. web前端学习总结--CSS

    CSS 什么是CSS? CSS 指层叠样式表(Cascading Style Sheets) 样式定义如何显示HTML元素 样式通常存储在样式表中 如何使用CSS 内联方式 样式定义在单个的HTML元 ...

  4. 微信公众号:1-IDHTTP控件:GET/POST 请求获取access_token

    (图来源于方蓓?) 首先要理解公众号的流程.通过图知道,我们要:1.你要有个web服务器,用于和微信服务器通讯.你的web服务器必须让微信服务器能找到.2.通信要求按照微信公众号开发要求的格式提供相关 ...

  5. redis学习五,redis集群搭建及添加主从节点

    redis集群 java架构师项目实战,高并发集群分布式,大数据高可用,视频教程 在redis3.0之前,出现了sentinel工具来监控各个Master的状态(可以看上一篇博客).如果Master异 ...

  6. MINSUB - Largest Submatrix

    MINSUB - Largest Submatrix no tags  You are given an matrix M (consisting of nonnegative integers) a ...

  7. mode-c++

    /*感谢机房JYW的友情馈赠*/#include <iostream> #include <cstdio> #include <cstring> #include ...

  8. NLS_NCHAR_CHARACTERSET 和 NLS_CHARACTERSET

    SQL> select * from nls_database_parameters; PARAMETER VALUE ------------------------------------- ...

  9. Hello, HTML5!

    一个典型的HTML5文档的基础结构如下: <!DOCTYPE html> <html lang=”en”> <head> <meta charset=”utf ...

  10. 搭建LVS+Keepalived负载均衡集群

    这两天学习了LVS+Keepalived负载均衡的搭建.网上的教程非常多,可是动起手来遇到不少问题. 如今把自己的搭建过程以及遇到的一些问题给分享下. 硬件环境: Macbook 8G内存.250G ...