3698: XWW的难题 有源汇上下界最大流
有源汇上下界最大流,行列建图,下界为ai,ja_{i,j},上界为ai,j+1a_{i,j}+1,跑的飞起。
不要忘记判断上取整下取整相同的情况。
#include<iostream>
#include<cstdio>
#include<cstring>
#define inf 1000000007
#define N 205
#define M 30005
using namespace std;
int n,cnt=1,S,T,SS,TT,total,ans;
int head[N],cur[N],dis[N],q[N],du[N];
int next[M],list[M],key[M];
double a[N>>1][N>>1];
int l[N>>1][N>>1];
inline void insert(int x,int y,int z)
{next[++cnt]=head[x];head[x]=cnt;list[cnt]=y;key[cnt]=z;
}
inline bool BFS(int S,int T)
{int t=0,w=1,x;memset(dis,-1,sizeof(dis));dis[S]=1; q[1]=S;while (t<w){x=q[++t];for (int i=head[x];i;i=next[i])if (key[i]&&dis[list[i]]==-1)dis[q[++w]=list[i]]=dis[x]+1;}return dis[T]!=-1;
}
int find(int x,int flow,int T)
{if (x==T) return flow;int w,used=0;for (int i=cur[x];i;i=next[i])if (key[i]&&dis[list[i]]==dis[x]+1){w=find(list[i],min(flow-used,key[i]),T);key[i]-=w; key[i^1]+=w; used+=w;if (key[i]) cur[x]=i;if (used==flow) return flow;}if (!used) dis[x]=-1;return used;
}
inline int dinic(int S,int T)
{int ans=0;while (BFS(S,T)){for (int i=0;i<=T;i++) cur[i]=head[i];ans+=find(S,inf,T);}return ans;
}
int main()
{scanf("%d",&n); n--; S=0; T=n<<1|1; SS=T+1; TT=T+2;for (int i=1;i<=n+1;i++)for (int j=1;j<=n+1;j++)scanf("%lf",&a[i][j]),l[i][j]=(int)a[i][j];for (int i=1;i<=n;i++){du[i]+=l[i][n+1],du[S]-=l[i][n+1];if (a[i][n+1]!=l[i][n+1]) insert(S,i,1),insert(i,S,0);}for (int i=1;i<=n;i++){du[i+n]-=l[n+1][i],du[T]+=l[n+1][i];if (a[n+1][i]!=l[n+1][i]) insert(i+n,T,1),insert(T,i+n,0);}for (int i=1;i<=n;i++)for (int j=1;j<=n;j++){du[i]-=l[i][j],du[j+n]+=l[i][j];if (a[i][j]!=l[i][j]) insert(i,j+n,1),insert(j+n,i,0);}for (int i=0;i<=T;i++)if (du[i]>0) total+=du[i],insert(SS,i,du[i]),insert(i,SS,0);else if (du[i]<0) insert(i,TT,-du[i]),insert(TT,i,0);insert(T,S,inf); insert(S,T,0);ans=dinic(SS,TT);if (ans!=total) puts("No");else ans=dinic(S,T),printf("%d\n",3*ans);return 0;
}
3698: XWW的难题 有源汇上下界最大流相关推荐
- BZOJ.3698.XWW的难题(有源汇上下界最大流ISAP)
题目链接 按套路行列作为两部分,连边 \(S->row->column->T\). S向代表行的元素连边cap(A[i][n])(容量上下界为上下取整),代表列的元素向T连边cap( ...
- 3698: XWW的难题[有源汇上下界最大流]
3698: XWW的难题 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 354 Solved: 178 [Submit][Status][Disc ...
- 【bzoj3698】XWW的难题 有源汇上下界网络流最大流
Description XWW是个影响力很大的人,他有很多的追随者.这些追随者都想要加入XWW教成为XWW的教徒.但是这并不容易,需要通过XWW的考核. XWW给你出了这么一个难题:XWW给你一个N* ...
- Shoot the Bullet(ZOJ3229)(有源汇上下界最大流)
描述 ensokyo is a world which exists quietly beside ours, separated by a mystical border. It is a utop ...
- BZOJ 3698: XWW的难题(有源汇上下界最大流)
题面 XWW是个影响力很大的人,他有很多的追随者.这些追随者都想要加入XWW教成为XWW的教徒.但是这并不容易,需要通过XWW的考核. XWW给你出了这么一个难题:XWW给你一个N*N的正实数矩阵A, ...
- 有上下界网络流 ---- Zoj3229 Shoot the Bullet|东方文花帖|【模板】有源汇上下界最大流
学习资料+题目链接 题目大意: 模板讲解 #include <bits/stdc++.h> #define mid ((l + r) >> 1) #define Lson rt ...
- [BZOJ3698]XWW的难题(有源汇上下界最大流+讲解)
题目: 我是超链接 题解: 建图的话和有源汇可行流一样 求解方法: 在新图上跑ss到tt的最大流(附加源汇) 若新图满流,那么一定存在一种可行流 记此时∑f(s,i)=sum1∑f(s,i)=sum1 ...
- BZOJ 3698 XWW的难题:有上下界的最大流
传送门 题意 给你一个 $ n*n $ 的正实数矩阵 $ A $ ,满足XWW性. 称一个 $ n*n $ 的矩阵满足XWW性当且仅当: $ A[n][n] = 0 $ 矩阵中每行的最后一个元素等于该 ...
- HDU 3157 Crazy Circuits(有源汇上下界最小流)
HDU 3157 Crazy Circuits 题目链接 题意:一个电路板,上面有N个接线柱(标号1~N),还有两个电源接线柱 + -.给出一些线路,每一个线路有一个下限值求一个能够让全部部件正常工作 ...
最新文章
- 【转载】升级OpenSSL修复高危漏洞Heartbleed
- 烧流量还是打矩阵,短视频不疯魔不成活?
- 中业科技机器人价格_2019年年中盘点:智能扫地机器人十大畅销品牌排名
- truncate,delete,drop之间的区别
- 【剑指Offer】18树的子结构
- 五年引用量最高的10大AI论文:Adam第一,Transformer上榜,竟然没有ResNet?
- ebook site
- python和循环语句_Python 小白零基础入门 -- 条件语句和循环语句
- 【电路仿真】基于matlab Simulink光伏电池仿真模型【含Matlab源码 486期】
- python导入win32com.client出错
- Euraka配置instanceid显示ip
- pic12f1823单片机入门_PIC单片机:如何建立PICKit3程序编写电路
- Evo使用过程问题汇总
- 蓝桥杯——调手表(python解答)
- 数量遗传学 第五章 双亲杂交后代数量性状均值和方差组成
- 英语单词: entropy;熵
- SAP 损益类科目余额结转到未分配利润科目
- Java切图或者判断是不是纯色图片
- 服务器发送了 HTTP 状态代码 401: Unauthorized
- 揭秘-Android刷量有多容易 1
热门文章
- Java多线程编程(3)
- BigBrother的大数据之旅Day 2 Linux(2)
- 脸萌~基于SVG绘制
- 前端知识体系思维导图
- 另眼看iPad发布。
- 技嘉1080显卡体质测试软件,超频测试与总结 - 技嘉GTX1080 Xtreme Gaming显卡评测:创新的重峦式三风扇 - 超能网...
- COGS 2057. [ZLXOI2015]殉国
- Ubuntu16.04 和 Win7 双系统启动顺序更改
- python 股市 挂单_股票买入挂单高了,隔夜挂单技巧
- 【汇正财经】波段操作有哪些运用技巧?