bzoj3698
Description

XWW是个影响力很大的人,他有很多的追随者。这些追随者都想要加入XWW教成为XWW的教徒。但是这并不容易,需要通过XWW的考核。
XWW给你出了这么一个难题:XWW给你一个N*N的正实数矩阵A,满足XWW性。
称一个N*N的矩阵满足XWW性当且仅当:(1)A[N][N]=0;(2)矩阵中每行的最后一个元素等于该行前N-1个数的和;(3)矩阵中每列的最后一个元素等于该列前N-1个数的和。
现在你要给A中的数进行取整操作(可以是上取整或者下取整),使得最后的A矩阵仍然满足XWW性。同时XWW还要求A中的元素之和尽量大。
Input

第一行一个整数N,N ≤ 100。
接下来N行每行包含N个绝对值小于等于1000的实数,最多一位小数。
Output

输出一行,即取整后A矩阵的元素之和的最大值。无解输出No。
Sample Input
4
3.1 6.8 7.3 17.2
9.6 2.4 0.7 12.7
3.6 1.2 6.5 11.3
16.3 10.4 14.5 0
Sample Output
129
HINT

【数据规模与约定】

有10组数据,n的大小分别为10,20,30…100。

【样例说明】

样例中取整后满足XWW性的和最大的矩阵为:

3 7 8 18

10 3 0 13

4 1 7 12

17 11 15 0

这题可谓是非常套路了 一看我就想起来poj2396 建图方法类似poj2396 还是每一行一个点 每一列一个点 然后从每个点勾连其了行和列之间的关系 然后上下界最大流参考下这里即可loj116

然后就从源向每行建 最后一个数的上下界的边 每列向汇建上下界的边 然后中间用每个数连接起来 首先跑有源汇的可行流 看是否满流 然后再跑一遍最大流 可以求出答案但是这个求出的答案其实是不算列尾和行尾的最大的和 那么 根据题目性质我只需要*3即可


#include<queue>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define inf 0x3f3f3f3f
#define N 220
using namespace std;
int num=1,h[N],level[N],down[N][N],up[N][N],n,S,T,d[N];double mp[N][N];
struct node{int y,z,next;
}data[N*N];
inline void insert1(int x,int y,int z){data[++num].y=y;data[num].z=z;data[num].next=h[x];h[x]=num;data[++num].y=x;data[num].z=0;data[num].next=h[y];h[y]=num;
}
inline bool bfs(int s,int t){memset(level,0,sizeof(level));queue<int>q;level[s]=1;q.push(s);while(!q.empty()){int x=q.front();q.pop();for (int i=h[x];i;i=data[i].next){int y=data[i].y,z=data[i].z;if (level[y]||!z) continue;level[y]=level[x]+1;q.push(y);if (y==t) return 1;}}return 0;
}
inline int dfs(int x,int t,int s){if (x==t) return s;int ss=s;for (int i=h[x];i;i=data[i].next){int y=data[i].y,z=data[i].z;if (level[x]+1==level[y]&&z){int xx=dfs(y,t,min(s,z));if(!xx) level[y]=0;s-=xx;data[i].z-=xx;data[i^1].z+=xx;if (!s) return ss;}}return ss-s;
}
int s,t;
int main(){freopen("bzoj3698.in","r",stdin);scanf("%d",&n);for (int i=1;i<=n;++i) for (int j=1;j<=n;++j) scanf("%lf",&mp[i][j]),down[i][j]=floor(mp[i][j]),up[i][j]=ceil(mp[i][j]);s=0;t=n+n+1;S=t+1;T=S+1;for (int i=1;i<n;++i){insert1(s,i,up[i][n]-down[i][n]);insert1(n+i,t,up[n][i]-down[n][i]);d[s]-=down[i][n];d[i]+=down[i][n];d[n+i]-=down[n][i];d[t]+=down[n][i];}insert1(t,s,inf);for (int i=1;i<n;++i)for (int j=1;j<n;++j) insert1(i,j+n,up[i][j]-down[i][j]),d[i]-=down[i][j],d[j+n]+=down[i][j];int sum=0;for (int i=0;i<=t;++i) {if (d[i]<0) insert1(i,T,-d[i]);if (d[i]>0) insert1(S,i,d[i]),sum+=d[i];}int ans=0;while(bfs(S,T)) ans+=dfs(S,T,inf);if (ans!=sum) {printf("No");return 0;}ans=0;while(bfs(s,t)) ans+=dfs(s,t,inf);printf("%d",ans*3);return 0;
}

bzoj3698 XWW的难题相关推荐

  1. bzoj3698: XWW的难题 有上下界的网络流

    bzoj3698: XWW的难题 Description XWW是个影响力很大的人,他有很多的追随者.这些追随者都想要加入XWW教成为XWW的教徒.但是这并不容易,需要通过XWW的考核. XWW给你出 ...

  2. [BZOJ3698] XWW的难题 网络流

    3698: XWW的难题 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 533  Solved: 275 [Submit][Status][Disc ...

  3. [bzoj3698]XWW的难题 有源汇的上下界最大流

    3698: XWW的难题 Time Limit: 10 Sec  Memory Limit: 128 MB [Submit][Status][Discuss] Description XWW是个影响力 ...

  4. [bzoj3698]XWW的难题——有上下界的最大流

    题目大意: XWW是个影响力很大的人,他有很多的追随者.这些追随者都想要加入XWW教成为XWW的教徒.但是这并不容易,需要通过XWW的考核. XWW给你出了这么一个难题:XWW给你一个N*N的正实数矩 ...

  5. [BZOJ3698] XWW的难题

    Description XWW是个影响力很大的人,他有很多的追随者.这些追随者都想要加入XWW教成为XWW的教徒.但是这并不容易,需要通过XWW的考核. XWW给你出了这么一个难题:XWW给你一个NN ...

  6. BZOJ3698 XWW的难题(上下界网络流+gap优化的细节处理)

    XWW给你一个N*N的正实数矩阵A,满足XWW性. 称一个N*N的矩阵满足XWW性当且仅当:(1)A[N][N]=0:(2)矩阵中每行的最后一个元素等于该行前N-1个数的和:(3)矩阵中每列的最后一个 ...

  7. [bzoj3698]XWW的难题

    传送门 有源汇上下界最大流,建模很经典,将每行和每列看做一个点,然后去按照有源汇上下界建图就行了,因为这个题,我又发现了自己网络流板子里的一个错误写法,bfs的时候得增广完再退出,改了我半个小时... ...

  8. [BZOJ3698]XWW的难题(有源汇有上下界的最大流)

    题目描述 传送门 题解 最大流和可行流的做法的区别:先ss->tt做一遍最大流,判断是否可行:然后将t->s,inf这条边去掉,再做一遍s->t的最大流,即为答案 这道题原图的建图方 ...

  9. [BZOJ3698]XWW的难题(有源汇上下界最大流+讲解)

    题目: 我是超链接 题解: 建图的话和有源汇可行流一样 求解方法: 在新图上跑ss到tt的最大流(附加源汇) 若新图满流,那么一定存在一种可行流 记此时∑f(s,i)=sum1∑f(s,i)=sum1 ...

最新文章

  1. spring基于注解程序开发
  2. 2020 互联网应届硕士的薪资情况
  3. [html] 如何根据设备尺寸做页面自适应?
  4. 计算机 运行新ie 命令,(新)计算机应用基础IE浏览器设置学习笔记——精品.doc
  5. CSS3 动画关键帧 @keyframes
  6. linux三剑客应用到工作中,LINUX 三剑客老大(AWK) 日常工作总结(示例代码)
  7. 编译OpenJDK12:a microsoft compiler is required
  8. asp php 一句话,ASP_asp一句话木马原理分析,通过HTTP协议来访问 一句话木 - phpStudy...
  9. 禁用微信浏览器的下拉_解决微信浏览器禁止下拉查看真实域名网址的问题
  10. SuperMap GIS 10i软件概览
  11. html css前端框架,GitHub - zyj1022/wee: WEE—简单快速的响应式HTML/CSS前端框架
  12. element ui 兼容低版本浏览器
  13. Java自学教程!mysql环境变量配置好了之后怎么办
  14. 《蔡康永情商课——为自己活一次》
  15. _ctl0_ContentPlaceHolder1 或者 ctl00_ContentPlaceHolder1
  16. 描述性统计部分(一)----统计量
  17. 使用高德地图的逆向地址,获取坐标点
  18. 外国程序员应该访问的最佳网站
  19. 怎么使用群合同功能,同时完成百人、千人同时签名?
  20. 金蝶品牌新战略浮出水面丨IBM助力数字货币走向成熟 【软件网每日新闻播报│第10-16期】

热门文章

  1. printf输出u32/u64的格式
  2. 个人随笔-求学求职-工作经历-计划
  3. 用计算机弹有点甜乐谱,《汪苏泷 - 有点甜,钢琴谱》汪苏泷(五线谱 钢琴曲 指法)-弹吧|蛐蛐钢琴网...
  4. RubyRails环境的离线安装
  5. 等位点数值差对迭代次数的影响
  6. oracle 菜单不见了,开始菜单不见了怎么办 开始菜单不见了解决方法【详解】
  7. 火鸟门户v4.0 2019全能地方门户系统源码
  8. Java 跨平台获取 MAC 地址的两种方法
  9. 信息资源管理概论--练习题
  10. mysql云化方案_云原生下,如何实现高可用的MySQL?