题面太长了,请各位自行品尝—>人员雇佣 分析: 借用题解的描述: a.选择每个人有一个代价Ai b.如果有两个人同时选择就可以获得收益Ei,j c.如果一个人选择另一个不选会产生代价Ei,j 这是一道模型题(不是模板题是模型题)我们要记住这种建模. 之前说过,最小割问题关键在于“舍弃”,所以说我们这个也是,要么舍弃Eij,要么舍弃Ai,Aj,要么舍弃完某个A还得付出Eij的代价. 这里直接给出建图方法. 首先,我们从原点向每个人i连边,容量为Σ(Eij)(1<=j<=n),表示选这个人最…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2039 https://www.luogu.org/problemnew/show/P1791 做法就这样:https://www.cnblogs.com/BearChild/p/6426850.html 如果不是先连边再加边权(话说这样很奇怪啊),而是算好边权再连边,再各种等价改一改,就能快2000ms,能在洛谷上A了... 代码如下: #include<cstdio> #include…
BZOJ_2039_[2009国家集训队]employ人员雇佣_ 最小割 Description 作为一个富有经营头脑的富翁,小L决定从本国最优秀的经理中雇佣一些来经营自己的公司.这些经理相互之间合作有一个贡献指数,(我们用Ei,j表示i经理对j经理的了解程度),即当经理i和经理j同时被雇佣时,经理i会对经理j做出贡献,使得所赚得的利润增加Ei,j.当然,雇佣每一个经理都需要花费一定的金钱Ai,对于一些经理可能他做出的贡献不值得他的花费,那么作为一个聪明的人,小L当然不会雇佣他. 然而,那些没有…
2039: [2009国家集训队]employ人员雇佣 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 1511  Solved: 728 Description 作为一个富有经营头脑的富翁,小L决定从本国最优秀的经理中雇佣一些来经营自己的公司.这些经理相互之间合作有一个贡献指数,(我们用Ei,j表示i经理对j经理的了解程度),即当经理i和经理j同时被雇佣时,经理i会对经理j做出贡献,使得所赚得的利润增加Ei,j.当然,雇佣每一个经理都需要花费一定…
http://www.lydsy.com/JudgeOnline/problem.php?id=2039 题意:中文题意. 思路:一开始想着和之前做的最大权闭合图有点像,但是如果把边全部当成点的话,那么点也太多了. 对于这种选和不选的方案问题,还是一样用最小割来解决,求最小的损失收益,然后用能够得到的总收益去减去最小割的值就是答案.思维模式是:将S集或者T集的某一边当成是选择的,另一边当成是不选择的,根据这样去连边,就可能更容易想到建图方案. 在这题里面,我把T集当成是选择的人,把S集当成是不选…
最小割的建图模式一般是,先算出总收益,然后再通过网络模型进行割边减去部分权值. 然后我们需要思考什么才能带来收益,什么才能有权值冲突. s连向选的点,t连向不选的点,那么收益的减少量应该就是将s集和t集分开的割边集. 下面说这道题的建图: 点: 每个人一个点,额外设源汇点. 边: 源向人连这个人能造成的全部收益(当作雇佣所有人,然后此人造成的收益) 人与人之间连两人熟悉度*2,呃,题意问题. 人向汇连雇佣需要花的钱. # include <cstdio> # include <cstri…
一开始在https://www.cnblogs.com/lokiii/p/10770919.html基础上连(i,j,b[i][j])建了个极丑的图T掉了--把dinic换成isap勉强能卡过 首先因为有正负收益所以考虑最小割,先ans=Σb,然后考虑负收益 把割完后和s相邻的视为不选,反之视为选,选的话要付出代价a,所以连(s,i,a[i]):然后考虑如果ij一个选一个不选(这里是单向的),需要Eij的代价,所以连(i,j,E[i][j]):然后是如果一个点不选的话那么所有Eij都不会被加,所…
传送门 膜一下大佬->这里 不难看出这是一个最小割的模型(然而我看不出来) 我们从源点向每一个点连边,容量为他能带来的总收益(也就是他能对其他所有经理产生的贡献) 然后从每一个点向汇点连边,容量为雇佣他的费用 那么考虑一下,如果我们割了源点到他的连线,代表不选他,就损失了相当于容量的利润 如果我们割了他到汇点的连线,代表选他,那么需要支付相当于容量的代价 那么只要用所有的收益减去最小割就是答案 然而还有一个条件,如果选$i$不选$j$会有损失 那么我们从$i$到$j$连容量为$E_{i,j}*2…
这道题教会我们一个道理靠谁也不如靠自己. 当时学长已经讲了,然而一脸懵逼,好吧,上网搜题解,二脸懵逼,于是自己动手,丰衣足食.自己推! 首先就是建模了,这道题谁与谁之间建模已经十分明了,超级源点,超级汇点没跑,重点在权值,首先,依照题意,是“舍弃”,因此基本确认为最小割,那么最小割从哪里割,就是我们每个人都雇佣所赚的钱(由样例可知,实际上是2倍所赚的钱,以下省略“*2”,简称合作金),但先不必算雇佣金,在一开始先只考虑赚钱,那么先说最简单的,两个人都雇佣,那么我们所赚的钱为两人合作金-雇佣两人所…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2039 用最小割看.对于一组关系 i , j ,如果都选,收益 2*Ei,j,可以看作0,作为基准:如果一个选了一个没选,不仅没了 2*Ei,j,还会额外少E,所以是3*E:如果两个都没选,就是少了E:解一下的话, i 和 j 相互连边的容量是 2*E :源点连来的容量是0,连向汇点的容量是E. #include<cstdio> #include<cstring> #inclu…
题目链接:BZOJ - 3144 题目分析 题意:在 P * Q 的方格上填数字,可以填 [1, R] . 在 (x, y) 上填 z 会有 V[x][y][z] 的代价.限制:相邻两个格子填的数字的差的绝对值不能超过 D . 求一个合法的最小总代价. 这道题是一个最小割模型,直接说建图吧. 建图:每个点 (x, y) 拆成 R 个点,(x, y, z) 代表 (x, y) 填 z. 然后从 S 向 (*, *, 1) 连 INF ,从 (*, *, R) 向 T 连 INF . 然后对于 (i…
题目链接:BZOJ - 3894 题目分析 最小割模型,设定一个点与 S 相连表示选文,与 T 相连表示选理. 那么首先要加上所有可能获得的权值,然后减去最小割,即不能获得的权值. 那么对于每个点,从 S 向它连权值为它选文的价值的边,从它向 T 连权值为它选理的价值的边. 对于一个点,它和与它相邻的点构成了一个集合,这个集合如果都选文,可以获得一个价值v1,如果都选理,可以获得一个价值 v2. 只要这个集合中有一个点选文,就无法获得 v2,只要有一个点选理,就无法获得 v1. 那么处理方式就是…
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2007 题意:给出一个n*n的格子,那么顶点显然有(n+1)*(n+1)个.每两个相邻顶点之间有两条边,这两条边是有向的,边上有权值..左上角为源点,右下角为汇点,求s到t的最小割. 思路:很明显这是一个平面图,将其转化为最 短路.我们将s到t之间连一条边,左下角为新图的源点S,右上角区域为新图的终点T,并且为每个格子编号.由于边是有向的,我们就要分析下这条边应该是哪 个点向哪个点的边.…
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2768 题意:给出一个无向图,每个点有一个值0或者1.现在重新设置每个点的值0或者1.设重新设置后的点与原来的点有x个点的值不一样:重新设置后有y条边(u,v)使得u和v的值不同.最小化x+y. 思路:若初始值为1则原点向其连边:否则其向汇点连边.对于边(u,v),u和v的值不同,则连边.求最小割.若左侧被割到,则表示将其改为0:右侧被割到,则表示将其改为1:中间被割到则表示两边冲突.…
2768: [JLOI2010]冠军调查 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=2768 Description 一年一度的欧洲足球冠军联赛已经进入了淘汰赛阶段.随着卫冕冠军巴萨罗那的淘汰,英超劲旅切尔西成为了头号热门.新浪体育最近在吉林教育学院进行了一次大规模的调查,调查的内容就是关于切尔西能否在今年问鼎欧洲冠军.新浪体育的记者从各个院系中一共抽取了n位同学作为参与者,大家齐聚一堂,各抒己见.每一位参与者都将发言,阐述自己的…
1497: [NOI2006]最大获利 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1497 Description 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU集团旗下的CS&T通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一项,就需要完成前期市场研究.站址勘测.最优化等项目.在前期市场调查和站址勘测之后,公司得到了一共N个可以作为通讯信号中转站的地址,而由于这些地址的地理…
[题意] 有n个有偿工作选做,m个机器,完成一个工作需要若干个工序,完成每个工序需要一个机器,对于一个机器,在不同的工序有不同的租费,但买下来的费用只有一个.问最大获益. [思路] 对于工作和机器建点,由S向每一个工作连边(S,u,a)a为完成工作的奖励,由一个工作向所需机器连边(u,v,b)b为租用机器费用,由每个机器向T连边(v,T,c)c为购买机器的费用.  求最小割,构图提供的选择有:不做该工作,租用一个工序需要的机器,购买一个机器满足所有需要.最小割保证ST不相连,即保证给所有工作分配…
圈地计划 Description 最近房地产商GDOI(Group of Dumbbells Or Idiots)从NOI(Nuts Old Idiots)手中得到了一块开发土地.据了解,这块土地是一块矩形的区域,可以纵横划分为N×M块小区域.GDOI要求将这些区域分为商业区和工业区来开发.根据不同的地形环境,每块小区域建造商业区和工业区能取得不同的经济价值.更具体点,对于第i行第j列的区域,建造商业区将得到Aij收益,建造工业区将得到Bij收益.另外不同的区域连在一起可以得到额外的收益,即如果…
最小割...二分染色然后把颜色不同的点的源汇反过来..然后就可以做了. 某个点(x,y): S->Id(x,y)(回报), Id(x,y)->T(代价), Id(i,j)&&Id(相邻节点)->newId(i,j)(+oo), newId(i,j)->T(回报) 然后染色不同的点反过来就可以了. 初始时答案为2*∑回报, 这样每个点要么割掉1个回报,要么割掉2个回报, 要么割掉1回报+代价.都对应着每一种方案 ----------------------------…
显然是最小割... 对于规律(i, j, k) i,j 互相连边, 容量为k 对于规则(S, a, b) 新建一个点x, x与S中每个点连一条弧, 容量+∞, 然后再根据a决定x与源点或汇点连边. 跑最大流, 用总收益减去就是答案了...挺好想的一道题... #include<bits/stdc++.h> using namespace std; const int maxn = 10100; const int INF = 10000000; struct edge { int to, ca…
4873: [Shoi2017]寿司餐厅 题意:略 唯一会做的... 一眼最小割 就是最大权闭合子图呀 \(s\rightarrow d_{positive} \rightarrow -d_{negtive} \rightarrow t\) 然后区间包含关系连inf 然后向t连花费 一开始看成\(mx^2 + cx\) x是选择种类数,直接吓哭了 平方怎么割啊我只会费用流 然后发现x是编号gg 然后建图注意编号最大是1000,tle了两次.... #include <iostream> #in…
题意 对于某一条无向图中的指定边 \((a, b)\) , 求出至少需要多少次操作.可以保证 \((a, b)\) 边在这个无向图的最小生成树中. 一次操作指: 先选择一条图中的边 \((u, v)\), 再把图中除了这条边以外的边, 每一条的权值都减少 \(1\) . \(n \le 500, m \le 800, 1 \le w_i < 10^6\) 题解 给除了一条边的所有边权 \(-1\) ,相当于给这条边的边权 \(+1\) . 利用生成树的结论,一条边 \(u \to v\) (权值…
怎么求一张无向图中任意两点之间的最小割? http://fanhq666.blog.163.com/blog/static/8194342620113495335724/ 一张无向图不同的最小割最多有n-1个. 所以可以用这些最小割建出一棵最小割树. #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<queue> #define i…
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 27715  Solved: 7134[Submit][Status][Discuss] Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: 左上角点为(1,1),右下角点为(N,M)(上图中N=4,M…
类似于happiness的一道题,容易想到最小割的做法. 但是不同的是那一道题是相邻的如果相同则有收益,这题是相邻的不同才有收益. 转化到建图上面时,会发现,两个相邻的点连的边容量会是负数.. 有一种转化的办法,把图进行黑白染色后,把白点的S-T倒转过来,这样就转化成了happiness那道题了... # include <cstdio> # include <cstring> # include <cstdlib> # include <iostream>…
这道题目很奇怪. 为什么奇怪?因为这道题用了一种叫分治最小割/最小割树的玩意. 以前从来没有见过这东西. 推荐一个讲这玩意的博客 写起来还是很顺手的. #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<ctime> #include<string> #include<ioma…
上来就跑3e5的最大流--脑子抽了 很容易看出,每个地方的海拔都是0或1因为再高了没有意义,又,上去下来再上去没有意义,所以最后一定是从s连着一片0,剩下连着t一片1,然后有贡献的就是01交接的那些边 跑个最小割就好了 然而跑不过,考虑建对偶图,也就是网格的空当成一个点,然后这些点之间互相连边的权值为原图穿过他们的边的权值,建立一对原点汇点,分别连左下边界的新点和右上边界的新点,这样跑最短路就是最小割 方便的建图是把所有边转90度就是新边 #include<iostream> #include…
把转置矩阵看成逆矩阵吓傻了233 首先按照矩乘推一下式子: \[ D=\sum_{i=1}^n a[i]*(\sum_{j=1}^n a[j]*b[j][i])-c[i] \] \[ D=(\sum_{i=1}^n \sum_{j=1}^n a[i]*a[j]*b[j][i])-(\sum_{i=1}^n a[i]*c[i]) \] 这样,很容易看出b是贡献部分,当a[i]a[j]同时为1的时候贡献b[i][j]+b[j][i],否则不贡献:c是花费部分,a[i]选1就花费c[i] 有正负收益,…
算法详见:http://www.cnblogs.com/lokiii/p/8191573.html 求出点两两之间的最小割之后,把他们扔到map/set里跑即可 可怕的是map和set跑的时间竟然完全一样-代码里注释掉的部分是map #include<iostream> #include<cstdio> #include<cstring> #include<queue> #include<map> #include<set> usin…
都说了是'切'糕所以是最小割咯 建图: 每个点向下一层连容量为这个点的val的边,S向第一层连容量为inf的边,最后一层向T连容量为自身val的边,即割断这条边相当于\( f(i,j) \)选择了当前层 第i层的每个点向第i+d层的与其相邻点\( \left | x_i-x_{i+d} \right |+\left | y_i-y_{i+d} \right |==1 \)连容量为inf的边,即割断i+d这层以及以下各层需要inf的费用,相当于防止相邻点的\( f(i,j) \)值选择差大于等于d…