bzoj 3232: 圈地游戏 01分数规划】的更多相关文章

题目大意: http://www.lydsy.com/JudgeOnline/problem.php?id=3232 题解: 首先我们看到这道题让我们最优化一个分式. 所以我们应该自然而然地想到01分数规划 首先我们考虑如何恰当地计算所有在封闭多边形内部的权值 我们可以首先假定DZY一定沿着逆时针走,然后我们发现: 我们可以对所有向右,向上的边的\(a\)值都设为在这条边的左侧的同行的价值和. \(b\)值即为经过这条边的花费 剩下的两条边对应着这两条边将价值取反即可. 我们发现把路线上所有边的…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3232 心烦意乱的时候调这道题真是...越调越气,就这样过了一晚上... 今天再认真看看,找出几处小错,就A了... 关于题解:https://www.cnblogs.com/CQzhangyu/p/6790404.html 关于最大权闭合子图:http://www.cnblogs.com/wuyiqi/archive/2012/03/12/2391960.html 对于这道题,首先,可以0…
数组开小导致TTTTTLE-- 是分数规划,设sm为所有格子价值和,二分出mid之后,用最小割来判断,也就是判断sm-dinic()>=0 这个最小割比较像最大权闭合子图,建图是s像所有点连流量为格子价值的边(相当于最大权闭合子图中的正权点),然后考虑边缘,两个相邻的格子,如果一个选一个不选那么中间这条边就有负的贡献,所以两个相邻的格子之间连两条边权为mid*边权的边,注意是两条,要互相连一下,然后所有边界上的点像t连边权为mid*边界边权的边,相当于假装外面还有一层点全标为t,然后跑最小割判断…
bzoj 3232: 圈地游戏 01分数规划,就是你要最大化\(\frac{\sum A}{\sum B}\),就二分这个值,\(\frac{\sum A}{\sum B} \geq mid\) \(\sum A-mid\sum B \geq 0\) 然后把所有的B中的权值乘一个mid再跑一个什么算法就星了 这就是道裸题(雾) 二分一个\(mid\),就是一个网络流问题了 选一个点的集合,如果两个方格相邻,一个选了一个没选,总和就要减去中间这条边的权值 然后用最小鸽,如果选就没有损失,不选有格子…
[BZOJ3232]圈地游戏(分数规划,网络流) 题面 BZOJ 题解 很神仙的一道题. 首先看到最大化的比值很容易想到分数规划.现在考虑分数规划之后怎么计算贡献. 首先每条边的贡献就变成了\(mid*C\),这个显然啊.考虑一个封闭图形如何计算答案. 发现被计算入答案的边一定是一侧有一个格子被圈进去了,另外一侧的格子没有被圈进去.那么这很像一个最小割.假设格子和源点相连表示被选进了答案,和汇点相连表示在答案以外.那么很明显把一条边两侧的格子给连起来,流量为\(mid*C\).怎么越来越像一个最…
3232: 圈地游戏 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 966  Solved: 466[Submit][Status][Discuss] Description DZY家的后院有一块地,由N行M列的方格组成,格子内种的菜有一定的价值,并且每一条单位长度的格线有一定的费用. DZY喜欢在地里散步.他总是从任意一个格点出发,沿着格线行走直到回到出发点,且在行走途中不允许与已走过的路线有任何相交或触碰(出发点除外).记这条封闭路线内部的格…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3232 当然是0/1分数规划.但加的东西和减的东西不在一起,怎么办? 考虑把它们合在一起.因为边围成的形状像一个环,所以把格子的贡献也放到边上,然后正常判环. 放到边上的方法就是:比如竖着的边,可以在每一行上维护该行格子值前缀和,然后指定那个围成的形状是,比如,逆时针的,那么向上的边就加上到它为止的前缀值,向下的边就减去到它为止的前缀值,然后就能判环了! 这样一定只有一个环.但多个环答案不会…
BZOJ 洛谷 裸01分数规划.二分之后就是裸最大费用最大流了. 写的朴素SPFA费用流,洛谷跑的非常快啊,为什么有人还T成那样.. 当然用二分也很慢,用什么什么迭代会很快. [Update] 19.2.15 下午写的zkw费用流在BZOJ上T了= = 然而在洛谷上和以前写的跑的差不多快 当然还可以写整数二分或者KM... 输出的时候最好加个eps,不然可以被卡比如BZOJ discuss里的数据. 第一次写的代码: //3624kb 4016ms #include <queue> #incl…
题目链接 \(Description\) 每个点有费用si与价值pi,要求选一些带根的连通块,总大小为k,使得 \(\frac{∑pi}{∑si}\) 最大 \(Solution\) 01分数规划,然后dp,设f[i][j]表示i子树选j个的最大权值和,直接暴力背包转移即可 在枚举子节点选的数量时,假设x有1.2.3.4四个子节点,复杂度为 \(1*sz[1]+sz[1]*sz[2]+(sz[1]+sz[2])*sz[3]+(sz[1]+sz[2]+sz[3])*sz[4]\) 相当于每对点在L…
要求比值最大,当然用分数规划. 二分答案,转化为选取一个最大的联通块使得它们的和大于0 然后我们直接DP. 复杂度$O(n^2\log {n})$ #include <map> #include <cmath> #include <queue> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namesp…