luogu P3410 拍照

最大权闭合图转最小割

要得到最大收益,我们可以用总可能收益减去最小花费,也就是最小割。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<queue>using namespace std;
typedef long long ll;
const int N = 500007, M = 5000007, INF = 0x3f3f3f3f;int n, m;
int head[N], ver[M], nex[M], tot;
int deep[N];
int cur[N], S, T;
ll maxflow, edge[M];void add(int x, int y, int z, bool o = 1){ver[tot] = y;edge[tot] = z;nex[tot] = head[x];head[x] = tot ++ ;if(o)add(y, x, 0, 0);
}bool bfs()
{memset(deep, 0x3f, sizeof deep);queue<int>q;q.push(S), deep[S] = 0, cur[S] = head[S];while(q.size()){int x = q.front();q.pop();for(int i = head[x]; ~i; i = nex[i]){int y = ver[i], z = edge[i];if(z > 0 && deep[y] == INF){q.push(y);deep[y] = deep[x] + 1;if(y == T)return true;}}}return false;
}ll dfs(int x, ll flow)
{if(x == T)return flow;ll ans = 0, i, k;for(i = cur[x]; ~i && flow; i = nex[i]){cur[x] = i;int y = ver[i];ll z = edge[i];if(edge[i] > 0 && (deep[y] == deep[x] + 1)){k = dfs(y, min(flow, z));if(!k)deep[y] = INF;edge[i] -= k;edge[i ^ 1] += k;ans += k;flow -= k;}}return ans;
}void dinic()
{while(bfs()){for(int i = 1; i <= n + m + 1; ++ i)cur[i] = head[i];maxflow += dfs(S, INF);}}int main()
{memset(head, -1, sizeof head);scanf("%d%d", &n, &m);S = 0, T = n + m + 1;ll sum = 0;for(int i = 1; i <= n; ++ i){int x;scanf("%d", &x);sum += x;add(S, i, x);while(~scanf("%d", &x) && x){add(i, x + n, INF);}}for(int i = 1; i <= m; ++ i){int x;scanf("%d", &x);add(i + n, T, x);}dinic();ll ans = sum - maxflow;printf("%lld\n", ans);return 0;
}

luogu P3410 拍照(最大权闭合图转最小割)相关推荐

  1. 【网络流24题】B、太空飞行计划问题(最大权闭合图转最小割、最小割方案输出)

    整理的算法模板合集: ACM模板 B.太空飞行计划问题(最大权闭合图转最小割.最小割方案输出)[省选/NOI- ] P2762 太空飞行计划问题 [问题分析] 最大权闭合图问题,可以转化成最小割问题, ...

  2. noi 2006 最大收益 最大权闭合图转最小割转最大流

    题意:一个公司有n个可以建造通讯战的地方,建造成本分别为pi,然后第i个公司会选择使用通讯站ai与bi,使用费用是ci,然后问这个通讯公司怎么建站能够获利最大.(净获利=总收益-总成本): 网上看到一 ...

  3. 【BZOJ】1497: [NOI2006]最大获利 最大权闭合子图或最小割

    [题意]给定n个点,点权为pi.m条边,边权为ci.选择一个点集的收益是在[点集中的边权和]-[点集点权和],求最大获利.n<=5000,m<=50000,0<=ci,pi<= ...

  4. 最大权闭合子图(最小割模型)

    1,定义: 1,最大权闭合子图是最小割的一个模型.即每一个子图中的每一个点,其出边的点也全应该在这个子图中.而所有子图中,其点的权值和最大就是最大权闭合子图. 2,构建该图,我们把所有正权值点与源点s ...

  5. 【洛谷 - P3410】拍照(最大权闭合图,网络流最小割)

    题干: 题目描述 小B有n个下属,现小B要带着一些下属让别人拍照. 有m个人,每个人都愿意付给小B一定钱让n个人中的一些人进行合影.如果这一些人没带齐那么就不能拍照,小B也不会得到钱. 注意:带下属不 ...

  6. luogu P2762 太空飞行计划问题(最大权闭合图)

    luogu P2762 太空飞行计划问题(最大权闭合图) 题目大意 W 教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而获取利润.现已确定了一个可供选择的实验集合E={ ...

  7. P2805-[NOI2009]植物大战僵尸【网络流,最大权闭合图】

    正题 题目链接:https://www.luogu.com.cn/problem/P2805 题目大意 n∗mn*mn∗m的格子,攻击这个格子(x,y)(x,y)(x,y)可以获得价值cx,yc_{x ...

  8. 学习笔记第二节:最大权闭合图

    关于 这个算法是在接触太空飞行计划问题时接触到的.为了解决这道问题,我在网上查阅了相当多的资料,在这里整理给大家.题目点击打开链接https://www.luogu.org/problemnew/sh ...

  9. 【bzoj1565】[NOI2009]植物大战僵尸 拓扑排序+最大权闭合图

    原文地址:http://www.cnblogs.com/GXZlegend/p/6808268.html 题目描述 输入 输出 仅包含一个整数,表示可以获得的最大能源收入.注意,你也可以选择不进行任何 ...

最新文章

  1. win7安装mysql-8.0.13-winx64
  2. 「每天一道面试题」下面的代码有问题吗?为什么?
  3. python:拉格朗日插值实现及求解
  4. C++11中Thread类简单使用的例子
  5. 强烈推荐:程序员必备的两个超级工具,一个是百宝箱,一个是百宝库
  6. java实体类 判断 字段_java8 根据实体类中的某个字段对实体类去重
  7. 当前时间加30分钟_男性早晨坚持慢跑30分钟,一段时间后,或许这些变化不请自来...
  8. WebbUpload的验证问题
  9. Java实现自定义敏感词库过滤
  10. 教育未来JAVA培训中心笔记(一):初学者如何学好JAVA
  11. 海康大华ie插件开发
  12. php讲一个数组分割成字符串,PHP 分割字符串函数把字符串分割成数组示例
  13. Sublime text3 Version 3.2.1 3207 和 3.2.2 3211(2019-11-06亲测有效)
  14. 疼痛共情ERP成分解析
  15. 1 PPT默认初始设置(主题颜色、撤回次数、自动保存、图片压缩、字体嵌入、多格式导出、参考线、默认字体、默认样式和清除占位符)
  16. 面试系列--如何自我介绍
  17. 全国哀悼日 网站变灰代码集锦
  18. 三八定律时间管理思想
  19. STM32初识及运用—GPIO
  20. mr编程实现手机流量统计和读取MySQL数据

热门文章

  1. 新版vue-cli搭建多页应用2
  2. zabbix-agent 启动不起来
  3. 为开发可穿戴设备 索尼收购了以色列芯片制造商
  4. Level3公司在哥伦比亚开通运营第三个数据中心
  5. intellij idea 和 myeclipse 转换
  6. 大规模业务服务器开发总结
  7. 2010年7月blog汇总:OpenTest、MetaModelEngine和敏捷个人
  8. 【入门级】自学Python第一步,记住这7大编码规范
  9. 十分钟带你入门最具Python风格的Gui库
  10. 这个Python知识点,90%初学者没太整明白