行列二分图模型,行指向列即表示权重w[i][j]
避免零流的方法就是使下界为1

#include<bits/stdc++.h>
#define rep(i,j,k) for(int i = j; i <= k; i++)
#define repp(i,j,k) for(int i = j; i < k; i++)
#define rrep(i,j,k) for(int i = j; i >= k; i--)
#define repe(i,u) for(int i = head[u]; ~i; i = nxt[i])
#define scan(a) scanf("%d",&a)
#define scann(a,b) scanf("%d%d",&a,&b)
#define scannn(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define println(a) printf("%d\n",a)
#define printbk(a) printf("%d ",a)
#define print(a) printf("%d",a)
using namespace std;
const int maxn = 1e5+11;
const int oo = 0x3f3f3f3f;
int to[maxn<<1],nxt[maxn<<1],cap[maxn<<1],flow[maxn<<1];
int head[maxn],tot;
void init(){memset(head,-1,sizeof head);tot=0;
}
void add(int u,int v,int w){to[tot]=v;nxt[tot]=head[u];cap[tot]=w;flow[tot]=0;head[u]=tot++;swap(u,v);to[tot]=v;nxt[tot]=head[u];cap[tot]=0;flow[tot]=0;head[u]=tot++;
}
int n,m,s,t;
int dis[maxn],pre[maxn],cur[maxn],gap[maxn];
bool vis[maxn];
struct QUEUE{int que[maxn];int front,rear;void init(){front=rear=0;}void push(int u){que[rear++]=u;}int pop(){return que[front++];}bool empty(){return front==rear;}
}que;
void bfs(){memset(vis,0,sizeof vis);que.init();que.push(t);vis[t]=1;dis[t]=0;while(que.empty()^1){int u = que.pop();for(int i = head[u]; ~i; i = nxt[i]){register int v=to[i],c=cap[i^1],f=flow[i^1];if(!vis[v]&&c>f){vis[v]=1;dis[v]=dis[u]+1;que.push(v);}}}
}
int aug(){int u=t,ans=oo;while(u!=s){ans=min(ans,cap[pre[u]]-flow[pre[u]]);u=to[pre[u]^1];}u=t;while(u!=s){flow[pre[u]]+=ans;flow[pre[u]^1]-=ans;u=to[pre[u]^1];}return ans;
}
int isap(){int ans=0;bfs();memset(gap,0,sizeof gap);memcpy(cur,head,sizeof head);for(int i = 1; i <= n; i++) gap[dis[i]]++;int u = s;while(dis[s]<n){if(u==t){ans+=aug();u=s;}bool ok=0;for(int i = cur[u]; ~i; i = nxt[i]){int v=to[i],c=cap[i],f=flow[i];if(c>f&&dis[u]==dis[v]+1){ok=1;pre[v]=i;cur[u]=i;u=v;break;}}if(!ok){int mn=n-1;for(int i = head[u]; ~i; i = nxt[i]){int v=to[i],c=cap[i],f=flow[i];if(c>f) mn=min(mn,dis[v]);}if(--gap[dis[u]]==0) break;dis[u]=mn+1;gap[dis[u]]++;cur[u]=head[u];if(u!=s) u=to[pre[u]^1];}}return ans;
}
int main(){int T,kase=0,R,C,a[maxn],b[maxn],G[50][50]; scan(T);while(T--){scann(R,C);rep(i,1,R) scanf("%d",&a[i]);rep(i,1,C) scanf("%d",&b[i]);rrep(i,R,1) a[i]=a[i]-a[i-1];rrep(i,C,1) b[i]=b[i]-b[i-1];init();s=R+C+1;t=s+1;n=t;rep(i,1,R) add(s,i,a[i]-C);rep(i,1,C) add(i+R,t,b[i]-R);rep(i,1,R)rep(j,1,C)add(i,j+R,19);int ans=isap();rep(i,1,R){repe(j,i){int v=to[j],c=cap[j],f=flow[j];if(c==0||v==s)continue;G[i][v-R]=flow[j]+1;}}printf("Matrix %d\n",++kase);rep(i,1,R){rep(j,1,C){if(j!=C) printbk(G[i][j]);else println(G[i][j]);}}if(T) printf("\n");}return 0;
}

转载于:https://www.cnblogs.com/caturra/p/7908831.html

UVA11082 行列模型相关推荐

  1. 刘汝佳训练指南《网络流》专题 BY 9974

    最近一直在做白书上的网络流, 做得几乎差不多了,在这小小总结一下. 已经忽略很水的题.差不多按难度排序了. UVa 11248                   增广小优化. UVa 1306(LA ...

  2. 纵观 Excel 演化史,开发者如何通过“表格技术”提升企业生产力

    我们在之前的文章中曾提到过,很多企业的 IT 业务是从一张表格开始的. 不仅仅是数据存储,团队中的信息共享也需依赖于表格这一数据结构.文档.报告.凭证以及基础数据的汇总计算,大部分是在表格的形式中完成 ...

  3. 《MongoDB大数据处理权威指南》读书笔记

    我们总是喜欢拿"顺其自然" 来敷衍人生道路上的荆棘坎坷, 却很少承认,真正的顺其自然, 其实是竭尽所能之后的不强求,而非两手一摊的不作为. --知乎   2020.08.1  mo ...

  4. 性能超越最新序列推荐模型,华为诺亚方舟提出记忆增强的图神经网络

    作者 | Chen Ma, Liheng Ma等 译者 | Rachel 出品 | AI科技大本营(ID:rgznai100) 用户-商品交互的时间顺序可以揭示出推荐系统中用户行为随时间演进的序列性特 ...

  5. 树模型集成学习(Tree Embedding)

    树模型集成学习 集成学习主要有两个思想,分别是bagging和boosting.树模型的集成模型都是使用树作为基模型,最常用的cart树,常见的集成模型有RandomForest.GBDT.Xgboo ...

  6. 精度45.9%,推理速度72.9FPS,百度飞桨推出工业级目标检测模型 PP-YOLO

    允中 发自 凹非寺 量子位 编辑 | 公众号 QbitAI 工业视觉.自动驾驶.安防.新零售等我们身边熟知的各行各业都需要目标检测技术,由于其很好的平衡了标注成本.检测精度和速度等,成为当前智能制造产 ...

  7. 《预训练周刊》第6期:GAN人脸预训练模型、通过深度生成模型进行蛋白序列设计

    No.06 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 超大规模预训练模型是当前人工智能领域研究的热点,为了帮助研究与工程人员了解这一领域的进展和资讯,智源社区整理了第6期< ...

  8. 我在谷歌实习时发现了一个模型 bug,于是有了这篇 ACL

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 文 | AlbertYang 编 | 小轶 表格的自动理解与检索已经成为 NLP 以及 ...

  9. 模型可解释性技术概览

    XAI系列二:模型可解释性技术概览 传统网络安全威胁分析依赖专家知识及基本的数据分析,然而随着攻击技术的复杂化.安全数据接入的多元化,高性能人工智能技术越来越多的应用到威胁分析中,试图解放安全行业的生 ...

  10. 将TensorFlow模型变为pb——官方本身提供API,直接调用即可

    TensorFlow: How to freeze a model and serve it with a python API 参考:https://blog.metaflow.fr/tensorf ...

最新文章

  1. Linux-find命令
  2. 学习Kotlin(一)为什么使用Kotlin
  3. 4.MYSQL 三大范式+BC范式
  4. 应用新的JDK 11字符串方法
  5. 开发中常见的@NotNull,@NotBlank,@NotEmpty注解的区别
  6. php checkstyle,php codebrowser未正确遵循checkstyle.xml中的路径
  7. qscoj:默契值(状压DP)
  8. SharePoint 用户配置文件服务
  9. svn利用钩子post-commit自动更新到线上测试服务器
  10. stm32毕业设计 超声波雷达可视化系统
  11. 数据仓库与数据挖掘复习题目
  12. C#即时通讯(局域网QQ)
  13. python计算几周零几天_Python自定义函数计算给定日期是该年第几天的方法示例
  14. presenting controller presented controller 如何区分
  15. JUDE工具类图制作
  16. matlab的round函数是什么意思,Oracle round函数是什么意思?怎么运用?
  17. 织梦模板文章的图片路径问题
  18. Flink使用二次聚合实现TopN计算-乱序数据
  19. matlab潮流计算求节点自导纳,matlab潮流计算.docx
  20. 解决在flask项目中,HTML网页的img无法显示本地图片的问题

热门文章

  1. javascript 图解 event对象offsetX, clientX, pageX, screenX, layerX, x区别
  2. centos7 升级最新版内核
  3. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节 常用函数接口_15_常用的函数式接口_Predicate接口练习-集合信息的筛选...
  4. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_04 IO字节流_13_使用字节流读取中文的问题...
  5. 从零开始做一个开源项目 学习笔记
  6. [BZOJ 4010] 菜肴制作
  7. js和jQuery的总结
  8. 《深入理解计算机网络》读后小记 8、IP地址和子网
  9. SQL2000和SQL2005同时安装问题(转载)
  10. java中的Date类