传送门


解析:

最小割入门题。

思路:

我们考虑直接做出全部的任务,然后考虑我们可能获得的最小亏损,其中放弃一个任务也是一种亏损,租用或购买一个机器也是一种亏损。

我们这样建图,从源点向每个任务连容量为其价值的边,保证这个任务会带来的购买或租用机器造成的亏损不超过它的价值。

我们从每个任务向它的工序需要的机器连容量为租用费用的边,再从机器向汇点连容量为购买费用的边。

这样求出来的最小割就是我们的最小亏损,因为割掉图中流量流满的部分边 之后我们就无法完成上述任务了,这个直接求最大流就好了。


Update:

我解释一下这样建图最终跑出来的网络流边的最终流量的意义。

首先是任务与源点之间的边,最终残量(即流量与容量之差)的意义就是这个任务能够带来的最大收益,如果流满说明这个任务应当放弃,因为我们租用或购买了所有它需要的机器的费用不能被它的价值填补。

对于机器而言,它和汇点的边如果流满,说明它需要被购买,否则,它只需要在前面的流满的边中被租用就行了。

其实主要思想就是,我们用源点到任务的流量限制了我们在每个任务上的新增花费(有些机器或许为了其他的任务已经被购买)不会超过这个任务的价值。

用机器到汇点的流量限制了每个机器如果在被租用的时候花费过多,不如直接购买。


代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define re register
#define gc getchar
#define pc putchar
#define cs constinline int getint(){re int num;re char c;while(!isdigit(c=gc()));num=c^48;while(isdigit(c=gc()))num=(num<<1)+(num<<3)+(c^48);return num;
}cs int N=2403,M=2000006;
cs int S=0,T=N-1;
int last[N],nxt[M<<1],to[M<<1],ecnt=1;
int cap[M<<1];
inline void addedge(int u,int v,int val){nxt[++ecnt]=last[u],last[u]=ecnt,to[ecnt]=v,cap[ecnt]=val;nxt[++ecnt]=last[v],last[v]=ecnt,to[ecnt]=u,cap[ecnt]=0;
}int lev[N],cur[N];
inline bool BFS(){queue<int> q;memset(lev,-1,sizeof lev);q.push(S),lev[S]=1;cur[S]=last[S];while(!q.empty()){int u=q.front();q.pop();for(int re e=last[u],v=to[e];e;v=to[e=nxt[e]]){if(cap[e]&&lev[v]==-1){lev[v]=lev[u]+1;if(v==T)return true;cur[v]=last[v];q.push(v);}}}return false;
}inline int Dinic(cs int &u,cs int &flow){if(u==T)return flow;int ans=0;for(int &e=cur[u],v=to[e];e;v=to[e=nxt[e]]){if(cap[e]&&lev[v]>lev[u]){int delta=Dinic(v,min(flow-ans,cap[e]));if(delta){cap[e]-=delta;cap[e^1]+=delta;ans+=delta;if(ans==flow)return flow;}}}lev[u]=-1;return ans;
}inline int maxflow(){int ans=0;while(BFS())ans+=Dinic(S,0x3f3f3f3f);return ans;
}int n,m,ans;
signed main(){n=getint();m=getint();for(int re i=1;i<=n;++i){int A=getint();addedge(S,i,A);ans+=A;A=getint();while(A--){int u=getint(),cost=getint();addedge(i,u+1200,cost);}}for(int re i=1;i<=m;++i){int val=getint();addedge(i+1200,T,val);}cout<<ans-maxflow();return 0;
}

转载于:https://www.cnblogs.com/zxyoi/p/10047227.html

2018.10.12【BZOJ1319】【CEOI2008】oeder(最小割)相关推荐

  1. 20172319 2018.10.12《Java程序设计教程》第6周课堂实践(补写博客)

    20172319 2018.10.12 <Java程序设计教程>第6周课堂测验 课程:<程序设计与数据结构> 班级:1723 学生:唐才铭 学号:20172319 指导老师:王 ...

  2. 2018.10.12 第1周的第2次小组讨论

    2018.10.12 第1周的第2次小组讨论 签到表 问题陈述 小组分工 签到表 学号 姓名 状态 1120151719 马小东 到 1120151725 王鹏宇 到 1120151726 杨钦凯 到 ...

  3. [2018.3.30集训]path-对偶图-最小割

    题目大意 给出一个包含 n + 1 个结点的有向图,结点的编号为 0 到 n.图中有 m 条 有向边,第 i 条有向边起点为 ui,终点为 vi,且长度为 wi.并且这些边还满 足如下的性质: • 对 ...

  4. 【一周头条盘点】中国软件网(2018.10.8~2018.10.12)

    每一个企业级应用的人都置顶了中国软件网 中国软件网为你带来最新鲜的行业干货 每周热点 ========= 华为首发沃土AI开发者使能计划 10月12日,在HUAWEI CONNECT 2018期间,面 ...

  5. 【2018.10.12】冥土追魂

    原题 题目描述 有一天 Misaka 和 Kuroko 在玩一个关于冥土追魂的游戏.... Misaka和Kuroko在一个 $n * m$ 的棋盘上玩游戏,每个格子上都放着一些呱太.游戏共进行 $k ...

  6. 《惢客创业日记》2018.10.12(周五) 声音主播背后的“天龙八步”(一)

    今天的主要任务是为<惢客创业日记>的后期音频处理工作写一个操作说明和制作一张操作流程表,主要目的是让一个菜鸟也能轻松的通过GoldWave等音频软件来进行后期音频处理工作.通过昨天和今天的 ...

  7. 笔记本台式黑苹果安装教程 傻瓜式安装苹果10.12.6 以神舟战神k650D为例(2018年12月23日更新 免费放出文件)

    一.前言 对于苹果系统,不仅每个人态度不一,就连这个系统也褒贬不一.虽然我一开始并不喜欢apple它的产品,但是使用过才能发现它独特的优势--优化好&设计美.虽然我学过编程.设计,但是看到ma ...

  8. S-T平面图中利用最短路求最小割(BZOJ 1001)

    BZOJ 1001: [BeiJing2006]狼抓兔子 最小割 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1001 现在小朋友们最喜欢 ...

  9. hdu 3046(最小割)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3046 思路:最小割的入门题,设源点为0,汇点为n*m+1,源点与点为2的连一天容量为inf的边,汇点与 ...

最新文章

  1. 某程序员吐槽:分手一个月,发现前女友和一个已婚男人在一起,愤而向他们公司举报,该男已被开除!网友:举报别人不道德!...
  2. 集合的get方法中参数从多少开始_JAVA从头开始一基础梳理(4-5-3)
  3. 【Oracle 常用查询】oracle表空间使用率统计查询
  4. 微软职位内部推荐-Software Engineer II-Office Incubation
  5. ASCII码对照表(不可见字符)
  6. java写spark碰到输出为[Ljava.lang.String;@889a8a8的情况
  7. IntelliJ IDEA Community社区版集成Tomcat or Jetty教程
  8. android okhttputils传数组,okhttp传递数组参数
  9. scala 基础 —— 函数(柯里化)
  10. 学习python 基础密码验证
  11. 媒体化战略:数字时代企业如何做好公关与内容营销
  12. KVM虚拟化笔记(十)------kvm虚拟机扩充磁盘空间
  13. 国产免费的visio替代品edraw mind map,用来话流程图够用了
  14. Navicat - 导入CSV注意事项
  15. 用vb6.0编写简易计算机,vb小程序(用vb编写简单小程序实例)
  16. 计算机图形学——Bresenham画线算法
  17. 什么是JavaSE,写给第一次接触Java的人
  18. Hi3559AV100移植友方4G模块N720V5(一)
  19. 2081.09.22 Kuma(非旋treap)
  20. onlyoffice 自动保存_onlyoffice服务在线编辑文档保存解析

热门文章

  1. 一种基于机载AI模块的多旋翼无人机的电力巡检报告生成方法
  2. react slick安装后引入css样式报错
  3. java程序线上故障排查及解决方案
  4. 开关量分布式IO系统可应用施耐德PLC扩展
  5. 没有赛博空间学的“元宇宙”就是扯淡
  6. 2020网络安全NISP一级(模拟题五)
  7. 圣基茨旅游景点大盘点,当地人才知道的旅游胜地!
  8. Python软件编程等级考试二级——20200614A
  9. 电脑经常蓝屏是什么原因?
  10. VMware+Windgb+Win7内核驱动调试