interlinkage:

https://ac.nowcoder.com/acm/contest/847/F

description:

solution:

  • 最大权闭合子图;
  • 每个单元格看成一个正权点,每一行每一列分别看成一个负权点。各自的点权就是其对应获得或者是消耗的能量(获得为正,消耗为负);
  • 每个单元格向所在行对应的点连inf边,所在列对应的点连inf边,表示选择这个单元格就必须选择其所在行和所在列;
  • 对于每一个关联奖励,新建一个点权为k的点。新建点向四个对应的行,列节点连inf边;
  • 源点向所有正权点连边,边权为正权点的权值。所有负权点向汇点连边,边权为负权点的权值的绝对值;
  • 答案=正权点权值之和-最小割;

code:

#include<algorithm>
#include<cstring>
#include<cstdio>
#include<iostream>
#include<queue>
using namespace std; const int N=1e6+;
const int inf=1e9+;
int n,m,tot=,S,T;
int head[N],cur[N],dep[N];
struct EDGE
{
int to,nxt,cap;
}edge[N<<];
inline int read()
{
char ch=getchar();int s=,f=;
while (ch<''||ch>'') {if (ch=='-') f=-;ch=getchar();}
while (ch>=''&&ch<='') {s=(s<<)+(s<<)+ch-'';ch=getchar();}
return s*f;
}
void add(int u,int v,int w)
{
edge[++tot]=(EDGE){v,head[u],w};head[u]=tot;
edge[++tot]=(EDGE){u,head[v],};head[v]=tot;
}
int getid(int x,int y)
{
return (x-)*n+y+*n;
}
queue <int> q;
int bfs()
{
memset(dep,,sizeof(dep));
while (!q.empty()) q.pop();
dep[S]=;
q.push(S);
while (!q.empty())
{
int k=q.front();q.pop();
for (int i=head[k];i;i=edge[i].nxt)
{
int y=edge[i].to;
if (!dep[y]&&edge[i].cap)
{
dep[y]=dep[k]+;
q.push(y);
}
}
}
return dep[T];
}
int dfs(int x,int a)
{
if (!a||x==T) return a;
int f,flow=;
for (int &i=cur[x];i;i=edge[i].nxt)
{
int y=edge[i].to;
if (dep[y]==dep[x]+&&(f=dfs(y,min(edge[i].cap,a)))>)
{
edge[i].cap-=f;
edge[i^].cap+=f;
flow+=f;
a-=f;
if (!a) break;
}
}
return flow;
}
int dinic()
{
int ans=;
while (bfs())
{
memcpy(cur,head,sizeof(head));
ans+=dfs(S,inf);
}
return ans;
}
int main()
{
n=read();m=read();
S=;T=n*n+*n+;
int sum=;
for (int i=;i<=n;i++)
for (int j=;j<=n;j++)
{
int c=read(),now=getid(i,j);
sum+=c;
add(S,now,c);
add(now,i,inf);
add(now,j+n,inf);
}
for (int i=;i<=n;i++) add(i,T,read());
for (int i=;i<=n;i++) add(i+n,T,read());
for (int i=;i<=m;i++)
{
int i1=read(),j1=read(),i2=read(),j2=read(),k=read();
sum+=k;
add(S,T+i,k);
add(T+i,i1,inf);add(T+i,j1+n,inf);
add(T+i,i2,inf);add(T+i,j2+n,inf);
}
printf("%d\n",sum-dinic());
return ;
}

[牛客网练习赛 45 F] Magic Slab 解题报告 (最大权闭合子图)的更多相关文章

  1. 牛客网练习赛23 F 托米的游戏

    链接:https://www.nowcoder.com/acm/contest/156/F 来源:牛客网 题目描述 题目背景编不下去了 托米有一棵有根树 T, 树根为1,每轮他会在剩下的子树中等概率一 ...

  2. 牛客网练习赛28A

    题目链接:https://www.nowcoder.com/acm/contest/200/A 链接:https://www.nowcoder.com/acm/contest/200/A来源:牛客网 ...

  3. 牛客网练习赛18 A 【数论/整数划分得到乘积最大/快速乘】

    链接:https://www.nowcoder.com/acm/contest/110/A 来源:牛客网 题目描述 这题要你回答T个询问,给你一个正整数S,若有若干个正整数的和为S,则这若干的数的乘积 ...

  4. 牛客网练习赛26B(简单的dp)

    题目链接:https://www.nowcoder.com/acm/contest/180/B 链接:https://www.nowcoder.com/acm/contest/180/B来源:牛客网 ...

  5. 牛客网练习赛34-D-little w and Exchange(思维题)

    链接:https://ac.nowcoder.com/acm/contest/297/D 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  6. 牛客网练习赛25 C 再编号

    链接:https://www.nowcoder.com/acm/contest/158/C来源:牛客网 定义对 a 的再编号为 a' ,满足 . 现在有 m 次询问,每次给定 x,t ,表示询问经过 ...

  7. 牛客网练习赛43-C(图论)

    题目链接:https://ac.nowcoder.com/acm/contest/548/C 题意:有n个知识点,学会每个知识点花T[i],已经学会了其中k个知识点,有m组关系,t1,t2,t3,表示 ...

  8. 牛客网练习赛12---A and B

    A题传送门:https://www.nowcoder.net/acm/contest/68/A B题传送门:   https://www.nowcoder.net/acm/contest/68/B A ...

  9. 牛客网练习赛61 A+B

    A.打怪 思路:先判定当小怪的攻击力为0时,你能杀无数只怪,因为小怪A不动你,然后再计算每个小怪最多能给你造成多少伤害(用小怪的血量除以你的攻击力,也就是你砍它几下它会死,你先手,所以小怪肯定比你少砍 ...

随机推荐

  1. VMWare linux 打印太多,看不到之前的记录的解决方法总结

    1.在命令后面加 | more. 可以每次按空格键或是回车键后翻.2.命令后面加| less ,可以前后翻.3.用重定向到文件 > 文件名,之后慢慢看 ----待补充 ------

  2. JWPL工具处理维基百科wikipedia数据用于NLP

    JWPL处理维基百科数据用于NLP 处理zhwiki JWPL是一个Wikipedia处理工具,主要功能是将Wikipedia dump的文件经过处理.优化导入mysql数据库,用于NLP过程.以下以 ...

  3. (转)基于MVC4+EasyUI的Web开发框架经验总结(11)--使用Bundles处理简化页面代码

    http://www.cnblogs.com/wuhuacong/p/4073203.html 在Web开发的时候,我们很多时候,需要引用很多CSS文件.JS文件,随着使用更多的插件或者独立样式文件, ...

  4. Git更新代码

    此次更新,创建新的文件与文件夹,并且删除了原有文件 通过“git status” 命令查看当前变更.通过变更信息可以看出,删除了test_case.py文件.这个删除只是在项目目录下进行删除,Git对 ...

  5. 什么是Capability

    desired capability的功能是配置Appium会话.他们告诉Appium服务器您想要自动化的平台和应用程序. Desired Capabilities是一组设置的键值对的集合,其中键对应 ...

  6. 提高生产力:开源Java工具包Jodd(Java的”瑞士军刀”)

    官方网站:http://jodd.org/ 下载地址:http://jodd.org/download/index.html Jodd=tools + ioc + mvc + db + aop + t ...

  7. laravel5 文件上传

    <!DOCTYPE html><html lang="zh-CN"><head> {{--设置字符编码--}} <meta charset ...

  8. VNC ( Virtual Network Computing )

    VNC is used to display an X windows session running on another computer. Unlike a remote X connectio ...

  9. isap算法模板poj 1273gap+弧优化 最大流

    几个比较好的博客 http://www.renfei.org/blog/isap.html http://kenby.iteye.com/blog/945454 http://blog.csdn.ne ...

  10. [bzoj3062][Usaco13Feb]Taxi_贪心

    Taxi bzoj-3062 Usaco13Feb 题目大意:有n个奶牛想坐出租车.第i头奶牛在起点a[i]等候,想坐出租车到b[i].Bessie从0出车,车上只能坐一头奶牛.她必须完成所有奶牛的要 ...