题意: 给一个矩阵,给出约束:i(0<i<n)行至少去ai个数,j行至少取bi个数,要求取的数值之和最小. 开始一见,就直接建了二分图,但是,发现这是有下界无上界最小费用流问题,肿么办...问题转化:所谓正难则反!现在某行/列要至少取k个,总和最小,不就是那行/列最多留下K个,使留下的和最大?其实也就是最多取k个,使值最大,转化为下界为0,有上界的最大费用问题(普通问题)."取","不取",本质都是一样的,正是"无为"的思想!取,则最…
[算法]最小费用最大流(费用流) [题解] 费用流:http://www.cnblogs.com/onioncyc/p/6496532.html 本题构图: 在有限的k次行走中尽可能多的拿到数字,明显的取舍问题,可以用网络流解决. 一共只有k次行走,因此流量至多为k. 而在起点到终点的所有最大流应该使价值最大化(取得数字最大),因此就可以构图了. 为每个节点x复制一个分点x’,从x向x'连一条容量1,费用-num[x]的边(限制数字只能取一次,代价变成负数就可以跑最小费用) 注意:因为每个点其实…
利用SPFA+EK算法解决费用流问题 例题不够裸,但是还是很有说服力的,这里以Codevs1227的方格取数2为例子来介绍费用流问题 这个题难点在建图上,我感觉以后还要把网络流建模想明白才能下手去做这种题,老实说挺难的 先直接给出建图的代码: scanf("%d",&x); //把每个节点拆成两个,分别为ai和bi //ai向bi连边,费用为权值,容量为1 //再连边,费用为0,容量为k,保证联通 addedge((i-)*n+j,(i-)*n+j+n*n,,x); added…
题目描述 某软件公司正在规划一项n天的软件开发计划,根据开发计划第i天需要ni个软件开发人员,为了提高软件开发人员的效率,公司给软件人员提供了很多的服务,其中一项服务就是要为每个开发人员每天提供一块消毒毛巾,这种消毒毛巾使用一天后必须再做消毒处理后才能使用.消毒方式有两种,A种方式的消毒需要a天时间,B种方式的消毒需要b天(b>a),A种消毒方式的费用为每块毛巾fA, B种消毒方式的费用为每块毛巾fB,而买一块新毛巾的费用为f(新毛巾是已消毒的,当天可以使用):而且f>fA>fB.公司经…
---题面--- 题解: 第一眼费用流,,然后想了好久怎么建图,,,最后发现是最小费用可行流的板子题.... 其实还没有很懂这个算法,所以这里只是摆一下步骤,以后再补理解吧. 首先一个思路就是转换图,将有上下限的图变为普通的网络流图,然后再跑费用流. 所以建图其实和有上下界的网络流一样的... 1,首先建立超级源点汇点ss和tt 2,对于原图中每一条边x ---> y,设其上下界为(l, r),费用为cost,那么连边的时候将流量变为r - l即可 3,对于任意点i,记d[i]为它的富余流量,即…
\(\color{#0066ff}{ 题目描述 }\) 你的任务是制定出一个产品的分配方案,使得订单条件被满足,并且所有员工的愤怒值之和最小.由于我们并不想使用Special Judge,也为了使选手有更多的时间研究其他两道题目,你只需要输出最小的愤怒值之和就可以了. \(\color{#0066ff}{输入格式}\) \(\color{#0066ff}{输出格式}\) 仅输出一个整数,表示最小的愤怒值之和. \(\color{#0066ff}{输入样例}\) 2 3 2 2 2 1 1 0 0…
从多种角度看[BZOJ 1061] [NOI 2008]志愿者招募(费用流) 题面 申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管.布布刚上任就遇到了一个难题:为即将启动的奥运新项目招募一批短期志愿者.经过估算,这个项目需要N 天才能完成,其中第i 天至少需要Ai 个人. 布布通过了解得知,一共有M 类志愿者可以招募.其中第i 类可以从第Si 天工作到第Ti 天,招募费用是每人Ci 元.新官上任三把火,为了出色地完成自己的工作,布布希望用尽量少的费用招募足够的志愿者,但这…
[] 输入文件示例input.txt4 21 76 87 109 13 输出文件示例output.txt15 [分析] 直接co题解好了,写得挺全.. [建模方法] 方法1 按左端点排序所有区间,把每个区间拆分看做两个顶点<i.a><i.b>,建立附加源S汇T,以及附加顶点S'. 1.连接S到S'一条容量为K,费用为0的有向边.2.从S'到每个<i.a>连接一条容量为1,费用为0的有向边.3.从每个<i.b>到T连接一条容量为1,费用为0的有向边.4.从每个…
题目链接:BZOJ - 1221 题目分析 算法一:最小费用最大流 首先这是一道经典的网络流问题.每天建立两个节点,一个 i 表示使用毛巾,一个 i' 表示这天用过的毛巾. 然后 i 向 T 连 Ai (第 i 天需要的毛巾数).从 S 向 i' 连 Ai ,这样这天新增的用过的毛巾就是 Ai 了. 然后 i' 可以连向 (i+1)' ,表示留到下一天再处理,i' 还可以流向 i+p+1 和 i+q+1,表示洗了之后再次使用,这两种边是有费用的. 还有就是新购买毛巾,从 S 向 i 连,费用就是…
题目大意: 平面上有n个点,两两不同.现在给出二叉树的定义,要求树边一定是从上指向下,即从y坐标大的点指向小的点,并且每个结点至多有两个儿子.现在让你求给出的这些点是否能构成一棵二叉树,如果能,使二叉树的树边长度(欧几里德长度)总和最小,输出这个总和.如果不能,输出-1.答案与标准答案相差1e-6内都认为是正确的. 算法讨论: 起初是这样想的,肯定是MCMF,费用是距离,然后流量一开始我是这样搞的:从父亲向儿子连流量为2的边.但是你会发现这样有一个问题,就是如果某个结点如果真的有两个儿子的话,那…
费用流模板题..限制一下不同愤怒值的工作数就可以了. --------------------------------------------------------------------------------------------- #include<queue> #include<cstdio> #include<cstring> #include<algorithm>   using namespace std;   typedef long l…
看到要求两个量就下意识的想到了费用流= =,先把一个点拆成两个点就能够解决一个的只经过一次的限制 CODE: #include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<queue>using namespace std;#define maxn 410#define maxm 50000#define inf 0x7fffffffstruct ed…
[网络流24题]最长k可重线段集(费用流) 题面 Cogs的数据有问题 Loj 洛谷 题解 这道题和最长k可重区间集没有区别 只不过费用额外计算一下 但是,还是有一点要注意的地方 这里可以是一条垂直的直线 所以,首先把所有的x轴全部乘2 如果两个相等就把右端点+1 否则左端点+1 这样就可以解决垂直于x轴的问题了 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #…
题目描述 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐在家中尽享计算机游戏的乐趣.已知办公楼都位于同一条街上.你决定给这些办公楼配对(两个一组).每一对办公楼可以通过在这两个建筑物之间铺设网络电缆使得它们可以互相备份.然而,网络电缆的费用很高.当地电信公司仅能为你提供 K 条网络电缆,这意味着你仅能为 K 对办公楼(或总计2K个办公楼)安排备份.任一个办公楼都属于唯一的配…
题目描述 鼹鼠们在底下开凿了n个洞,由n-1条隧道连接,对于任意的i>1,第i个洞都会和第i/2(取下整)个洞间有一条隧 道,第i个洞内还有ci个食物能供最多ci只鼹鼠吃.一共有m只鼹鼠,第i只鼹鼠住在第pi个洞内,一天早晨,前k只 鼹鼠醒来了,而后n-k只鼹鼠均在睡觉,前k只鼹鼠就开始觅食,最终他们都会到达某一个洞,使得所有洞的ci均大 于等于该洞内醒着的鼹鼠个数,而且要求鼹鼠行动路径总长度最小.现对于所有的1<=k<=m,输出最小的鼹鼠行动 路径的总长度,保证一定存在某种合法方案.…
题目描述 给一列数,要求支持操作: 1.修改某个数的值 2.读入l,r,k,询问在[l,r]内选不相交的不超过k个子段,最大的和是多少. 输入 The first line contains integer n (1 ≤ n ≤ 105), showing how many numbers the sequence has. The next line contains n integers a1, a2, ..., an (|ai| ≤ 500). The third line contain…
题目描述 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味 的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐在家中尽享计算机游戏的乐趣.已知办公 楼都位于同一条街上.你决定给这些办公楼配对(两个一组).每一对办公楼可以通过在这两个建筑物之间铺设网 络电缆使得它们可以互相备份.然而,网络电缆的费用很高.当地电信公司仅能为你提供 K 条网络电缆,这意味 着你仅能为 K 对办公楼(或总计2K个办公楼)安排备份.任一个办公楼都属于…
题目描述 在星历2012年,星灵英雄Zeratul预测到他所在的Aiur行星在M天后会发生持续性暴雨灾害,尤其是他们的首都.而Zeratul作为星灵族的英雄,当然是要尽自己最大的努力帮助星灵族渡过这场自然灾害.要渡过这场自然灾害,Zeratul自然要安排很多很多事情,其中一件就是将雨水疏导到大海里去.星灵族在重建家园的时候建造了N条河流,这些河流连接了共N+1个城市,当然其中包括了星灵首都.城市的编号为0…N,星灵首都的编号为0.当然水流是有方向的,除了星灵首都以外,其余的城市都有且仅有一条河流…
Mining Station on the Sea Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3565    Accepted Submission(s): 1108 Problem Description The ocean is a treasure house of resources and the development…
题目描述 CZ市为了欢迎全国各地的同学,特地举办了一场盛大的美食节.作为一个喜欢尝鲜的美食客,小M自然不愿意错过这场盛宴.他很快就尝遍了美食节所有的美食.然而,尝鲜的欲望是难以满足的.尽管所有的菜品都很可口,厨师做菜的速度也很快,小M仍然觉得自己桌上没有已经摆在别人餐桌上的美食是一件无法忍受的事情.于是小M开始研究起了做菜顺序的问题,即安排一个做菜的顺序使得同学们的等待时间最短.小M发现,美食节共有n种不同的菜品.每次点餐,每个同学可以选择其中的一个菜品.总共有m个厨师来制作这些菜品.当所有的同…
题目描述 大战将至, 美国决定实行计划经济.美国西部总共有 N 个城市,编号 为 0 ∼ N − 1,以及 M 条道路,道路是单向的.其中城市 0 是一个大城 市,里面住着 K 个人,而城市 N − 1 是一个农业城市.现在所有城市 0 的 居民都需要到城市 N − 1 去领取食物.由于担心体力不支,所以居民都会 采取开车的形式出行.但道路不是无限宽的,对于一条道路,会有 ci 的限 制,表示在同一天内,最多只能有 ci 辆车同时在这条道路上行驶.一条道 路的长度为 1,每辆车的行驶速度也可以假…
昨天考试被教育了一波.为了学习一下\(T3\)的科技,我就找到了这个远古时期的\(cf\)题(虽然最后\(T3\)还是不会写吧\(QAQ\)) 顾名思义,这个题目其实可以建成一个费用流的模型.我们用流量来限制区间个数,用费用强迫它每次每次选择最大的区间就可以啦.但是因为询问很多,复杂度似乎不行,于是就有了这种神奇的科技--线段树模拟费用流. 在原先的费用流模型里,我们有正反两种边,而反向边的意义就在于,在每一次增广的时候可以反悔以前的操作,把局部最优向更大范围的局部更优优化. 参考反向边的原理,…
问题描述在<Harry Potter and the Chamber of Secrets>中,Ron 的魔杖因为坐他老爸的 Flying Car 撞到了打人柳,不幸被打断了,从此之后,他的魔杖的魔力就大大减少,甚至没办法执行他施的魔咒,这为 Ron 带来了不少的烦恼.这天上魔药课,Snape 要他们每人配置一种魔药(不一定是一样的),Ron 因为魔杖的问题,不能完成这个任务,他请 Harry 在魔药课上(自然是躲过了 Snape 的检查)帮他配置.现在 Harry 面前有两个坩埚,有许多种药…
P2053 [SCOI2007]修车 顾客平均等待的最小时间$=$等待总时间$/n$ 考虑只有1个技术人员时,$n$辆车等待总时间 $A_1+(A_1+A_2)+(A_1+A_2+A_3)+...+\sum_{i=1}^{n}A_i$ 发现第$k$个修第$i$辆车的代价为$A_i*(n-k+1)$ 为了方便我们把它换个形式 倒着第$k$个修第$i$辆车的代价为$A_i*k$ 想到可以用费用流解决 于是我们可以把 第$i$个人倒着第$k$个修第$j$辆车 当成一个点 车代表的点向该点连一条边 流量…
传送门 考虑竞赛图三元环计数,设第\(i\)个点的入度为\(d_i\),根据容斥,答案为\(C_n^3 - \sum C_{d_i}^2\) 所以我们需要最小化\(\sum C_{d_i}^2\) 考虑将\(C_{d_i}^2\)差分,然后通过费用流解决 下面\((a,b)\)边表示流量为\(a\).费用为\(b\)的边 建图: 每一场比赛和每一个人都建一个点 \(S\)向每一场比赛连\((1,0)\)边 每一场比赛若不确定结果则向两个参与者连\((1,0)\)边,如果胜者确定则只向胜者连\((…
Libre 6012 「网络流 24 题」分配问题 (网络流,费用流) Description 有n件工作要分配给n个人做.第i个人做第j件工作产生的效益为\(c_{ij}\).试设计一个将n件工作分配给n个人做的分配方案,使产生的总效益最大. 对于给定的n件工作和n个人,计算最优分配方案和最差分配方案. Input 第1 行有1 个正整数n,表示有n件工作要分配给n 个人做. 接下来的n 行中,每行有n 个整数\(c_{ij}\),1≤i≤n,1≤j≤n,表示第i 个人做第j件工作产生的效益为…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5988 题目大意: 给定n个点,m条有向边,每个点是一个吃饭的地方,每个人一盒饭.每个点有S个人,有B盒饭.每条边只能被走c次,每条边上都有电线,第一个人通过的时候,不会破坏电线,从第二个人开始,每次都有概率p破坏掉电线.使得每个人都能吃饭,求最小破坏电线的概率. 解题思路: 题目要求我们求最小破坏电线的概率,就是一个最小乘积问题,加上log可以将其转变为加法,那样就可以使用费用刘来解决了. 按以下方…
国际惯例题面:如果我们枚举放几个零件的话,第二个限制很容易解决,但是第一个怎么办?(好的,这么建图不可做)考虑我们枚举每行每列最多放几个零件t,然后计算零件总数sum.这样如果可行的话,则有t*B<=sum*A.考虑第一个限制怎么办.我们可以钦定所有可行的位置都放上零件,然后再把多的零件拆下来.我们令sxi为第i行能放的最多零件数,syi为第i列能放的最多零件数.由源点向每一行连流量sxi费用0的边,每一列向汇点连流量syi费用0的边.然后让每一行i向每一列i连流量t费用0的边,表示第i行和第j…
题目链接 LOJ 洛谷 容易想到最小费用最大流分配度数. 因为水管形态固定,每个点还是要拆成4个点,分别当前格子表示向上右下左方向. 然后能比较容易地得到每种状态向其它状态转移的费用(比如原向上的可以流到向下). 注意比如向左向上的L,左连右,上连下,没有上连右(日常zz). 可以看这的图. 解决旋转的问题后,还要处理流量从哪里产生.结束. 因为是网格图,容易想到黑白染色.题目中"没有漏水水管"即格子的断头两两匹配,而匹配只发生在黑白格之间.so源点向所有白格子连边,所有黑格子向汇点连…
BZOJ 洛谷 \(Solution\) 很显然的建二分图后跑最大费用流,但有个问题是一个数是只能用一次的,这样二分图两部分都有这个数. 那么就用两倍的.如果\(i\)可以向\(j'\)连边,\(j\)也向\(i'\)连边,如果上一次走了\(i->j'\),那么这一次一定走\(j->i'\). 每次跑最大费用流,直至有一次费用变成负,然后加上当前正权值能抵消它的流量,最后总流量除以2就可以了. \(Another Solution\) 两个数能匹配首先要能整除,其次它们所有质因子的次数和一定只…