传送门

水题。

建图都不想说了

——代码

 #include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
#define INF 1e9
#define M 101
#define N 100001
#define min(x, y) ((x) < (y) ? (x) : (y)) int n, m, cnt, s, t;
int a[M], b[M], map[M][M], dis[N], pre[N];
int head[N], to[N << ], val[N << ], cost[N << ], next[N << ];
bool vis[N]; inline int read()
{
int x = , f = ;
char ch = getchar();
for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = -;
for(; isdigit(ch); ch = getchar()) x = (x << ) + (x << ) + ch - '';
return x * f;
} inline void add(int x, int y, int z, int c)
{
to[cnt] = y;
val[cnt] = z;
cost[cnt] = c;
next[cnt] = head[x];
head[x] = cnt++;
} inline bool spfa()
{
int i, u, v;
std::queue <int> q;
memset(vis, , sizeof(vis));
memset(pre, -, sizeof(pre));
memset(dis, / , sizeof(dis));
q.push(s);
dis[s] = ;
while(!q.empty())
{
u = q.front(), q.pop();
vis[u] = ;
for(i = head[u]; i ^ -; i = next[i])
{
v = to[i];
if(val[i] && dis[v] > dis[u] + cost[i])
{
dis[v] = dis[u] + cost[i];
pre[v] = i;
if(!vis[v])
{
q.push(v);
vis[v] = ;
}
}
}
}
return pre[t] ^ -;
} inline int dinic()
{
int i, d, sum = ;
while(spfa())
{
d = 1e9;
for(i = pre[t]; i ^ -; i = pre[to[i ^ ]]) d = min(d, val[i]);
for(i = pre[t]; i ^ -; i = pre[to[i ^ ]])
{
val[i] -= d;
val[i ^ ] += d;
}
sum += dis[t] * d;
}
return sum;
} int main()
{
int i, j;
m = read();
n = read();
s = , t = n + m + ;
memset(head, -, sizeof(head));
for(i = ; i <= m; i++)
{
a[i] = read();
add(s, i, a[i], );
add(i, s, , );
}
for(i = ; i <= n; i++)
{
b[i] = read();
add(i + m, t, b[i], );
add(t, i + m, , );
}
for(i = ; i <= m; i++)
for(j = ; j <= n; j++)
{
map[i][j] = read();
add(i, j + m, INF, map[i][j]);
add(j + m, i, , -map[i][j]);
}
printf("%d\n", dinic());
cnt = ;
memset(head, -, sizeof(head));
for(i = ; i <= m; i++)
{
add(s, i, a[i], );
add(i, s, , );
}
for(i = ; i <= n; i++)
{
add(i + m, t, b[i], );
add(t, i + m, , );
}
for(i = ; i <= m; i++)
for(j = ; j <= n; j++)
{
add(i, j + m, INF, -map[i][j]);
add(j + m, i, , map[i][j]);
}
printf("%d\n", -dinic());
return ;
}

最新文章

  1. sicp-py
  2. Structs框架
  3. CSS中LI圆点样式li {list-style-type:符号名称}
  4. PHP创建数据库数据表
  5. OpenCV图像处理中常用函数汇总(2)
  6. 微信开发笔记(一)通过.net如何实现接入微信
  7. [CODEVS1697]⑨要写信
  8. linux集群时间同步
  9. CPU acceleration status:HAXM must be updated(version 1.1.1&lt;6.0.1)
  10. openStack 性能开测-2
  11. 输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)
  12. weak和assign区别
  13. HDU 1006 [Tick Tick]时钟问题
  14. C#.NET 大型通用信息化系统集成快速开发平台 4.0 版本 - 客户常用问题回答
  15. 牛刀小试MySQL--日志文件
  16. suoi44 核能显示屏 (cdq分治)
  17. shell将字符串分隔成数组
  18. Git 小记
  19. 混沌数学之R&#246;ssler(若斯叻)吸引子
  20. Workflow_上传和下载Workflow编译方式(汇总)

热门文章

  1. [神经网络]一步一步使用Mobile-Net完成视觉识别(二)
  2. GCD 代码以及GCD思想
  3. 删除Chrome地址栏记录中自动补全的网址
  4. Ubuntu下手动安装NextCloud
  5. oracle 数据导到 sql server
  6. 在ASP.NET项目中的web.config文件里配置数据库连接并在程序代码中获取连接字符串
  7. POP简单动画简单使用 (入门级别)
  8. JS - encodeURI与encodeURIComponent的区别
  9. python源码剖析学习记录-01
  10. jCarousel,jQuery下的滚动切换传送插件