[USACO14MAR] Sabotage 二分答案 分数规划 最终答案的式子: \[ \frac{sum-sum[l,r]}{n-len[l,r]}\le ans \] 转换一下: \[ sum[1,l-1]+sum[r+1,n]\le ans*(len[l,l-1]+len[r+1,n])\\ \sum (a[j]-ans)\le 0 \\ (j\in[1,l-1],[r+1,n]) \] 这里我们先都减去\(ans\),然后求一个前缀和.后缀和.在\(i\)点最小的前缀和,在\(i\)点最…
题目链接 Solution 去掉中间一段区间 \([l,r]\) 后剩下的平均值可以表示为 : \[\frac{\sum^{n}_{i=1}{v_i}-\sum^{r}_{i=l}{v_i}}{n-(r-l+1)}\] 二分的答案如果要满足条件,即: \[\frac{\sum^{n}_{i=1}{v_i}-\sum^{r}_{i=l}{v_i}}{n-(r-l+1)}<Ans\] 移一下项,然后可以得到: \[{\sum^{n}_{i=1}{(v_i-Ans)}<\sum^{r}_{i=l}{…
题目描述 Farmer John's arch-nemesis, Farmer Paul, has decided to sabotage Farmer John's milking equipment! The milking equipment consists of a row of N (3 <= N <= 100,000) milking machines, where the ith machine produces M_i units of milk (1 <= M_i &…
现在怎么做的题都这么水了.. 题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=4819 (luogu) https://www.luogu.org/problemnew/show/P3705 题解: 常规分数规划套路,二分答案\(mid\)之后边权改变为\(a_{i,j}-mid\times b_{i,j}\)求最大费用最大流即可.(我求成最小费用了,真厉害) 从网上学到一种神奇做法: 迭代 每次按照上次的答案\(mid…
先二分答案m, 然后对于原序列 A[i] = A[i] - m,  然后O(n)找最大连续子序列和, 那么此时序列由 L + mx + R组成. L + mx + R = sum - n * m, sum为原序列的和. 假如二分的答案m是可行的, 那么 L + R = sum - n * m - mx 应该 <= 0 ------------------------------------------------------------------------------------- #inc…
题目链接:http://poj.org/problem?id=3621 Sightseeing Cows Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11526   Accepted: 3930 Description Farmer John has decided to reward his cows for their hard work by taking them on a tour of the big ci…
题目链接 本来以为自己可以做出来,结果……打脸了 (貌似来wc立了好几个flag了,都没竖起来) 不过乱蒙能蒙出一个叫“分数规划”的东西的式子还是很开心的 观察$C=\frac{a_{1}+a_{2}+.......+a_{n}}{b_{1}+b_{2}+.....b_{n}}$ 然后可以把分母乘到左边 然后可以把C乘进去 然后二分C,建图求最大权匹配,判断跟答案的关系. #include<cstdio> #include<cstdlib> #include<cctype&g…
题目链接: [BJOI2019]奥术神杖 答案是$ans=\sqrt[c]{\prod_{i=1}^{c}v_{i}}=(\prod_{i=1}^{c}v_{i})^{\frac{1}{c}}$. 这样不大好求,我们将这个式子取$ln$,变成$ln\ ans=\frac{1}{c}\sum_{i=1}^{c}ln\ v_{i}$. 这显然是一个分数规划,每次二分一个答案$mid$,将每个串的权值都减去$mid$,那么只需要求最大价值是否大于$0$即可. 剩下的问题就是一个在$AC$自动机上的$D…
有一个二分图,每个部都有 \(n\) 个点,每条边有两个参数 \(a_e, b_e\),求一种匹配,使得 \(\sum a_i / \sum b_i\) 最大 Solution 显然的分数规划,考虑二分一个答案 \(mid\),那么设每条边的权值为 \(c_i = a_i - kb_i\) 然后跑二分图最大权匹配,如果跑出来答案大于 \(0\) 就表明 OK,可以将答案调大,否则调小. KM 在稠密的时候比 MCMF 跑的快点,对这题的话其实都能过吧 #include <bits/stdc++.…
分数规划是这样一个东西: 给定若干元素,每个元素有两个属性值\(a_i,b_i\),在满足题目要求的某些限制下选择若干元素并求出\(\frac{\sum a}{\sum b}\)的最大值. 如果没有限制的话,肯定是贪心的选. 假设当前选择了一个解\(x_0\),却并不是\(\frac{\sum a}{\sum b}\)的最大值,我们有 \[\frac{\sum a}{\sum b}>x_0\] 进而 \[\sum a-bx_0>0\] 这时候我们要求的东西变成了\(a-bx_0\),每个元素的…