[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\)点最小的后缀和,\(O(n)\)枚举断点(也不算断点)如果存在则return 1

#include <cstdio>
#include <algorithm>
#define MAXN 100010
using namespace std;
int n;
int m[MAXN];
double psum[MAXN],lsum[MAXN],psum_min[MAXN],lsum_min[MAXN],a[MAXN];
const double eps=1e-6;
inline bool check(double x){
for(int i=0;i<=n+1;++i) psum_min[i]=lsum_min[i]=1e9;
for(int i=1;i<=n;++i) a[i]=(double)m[i]-x;
for(int i=1;i<=n;++i) psum[i]=psum[i-1]+a[i], psum_min[i]=min(psum_min[i-1], psum[i]);
for(int i=n;i;--i) lsum[i]=lsum[i+1]+a[i], lsum_min[i]=min(lsum_min[i+1], lsum[i]);
for(int i=1;i<n-1;++i)
if(psum_min[i]+lsum_min[i+2]<=0) return 1;
return 0;
}
int main(){
scanf("%d", &n);
for(int i=1;i<=n;++i) scanf("%d", &m[i]);
double l=1,r=10000,ans=-1;
while(r-l>eps){
double mid=(l+r)/2;
if(check(mid)) r=mid,ans=mid;
else l=mid;
}
printf("%.3lf", ans);
}

[USACO14MAR] Sabotage 二分答案 分数规划的更多相关文章

  1. [USACO14MAR] 破坏Sabotage(二分答案,分数规划)

    题目链接 Solution 去掉中间一段区间 \([l,r]\) 后剩下的平均值可以表示为 : \[\frac{\sum^{n}_{i=1}{v_i}-\sum^{r}_{i=l}{v_i}}{n-( ...

  2. [USACO14MAR]破坏Sabotage 二分答案

    题目描述 Farmer John's arch-nemesis, Farmer Paul, has decided to sabotage Farmer John's milking equipmen ...

  3. BZOJ 4819 Luogu P3705 [SDOI2017]新生舞会 (最大费用最大流、二分、分数规划)

    现在怎么做的题都这么水了.. 题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=4819 (luogu) https://ww ...

  4. BZOJ 3477: [Usaco2014 Mar]Sabotage( 二分答案 )

    先二分答案m, 然后对于原序列 A[i] = A[i] - m,  然后O(n)找最大连续子序列和, 那么此时序列由 L + mx + R组成. L + mx + R = sum - n * m, s ...

  5. POJ 3621 Sightseeing Cows 【01分数规划+spfa判正环】

    题目链接:http://poj.org/problem?id=3621 Sightseeing Cows Time Limit: 1000MS   Memory Limit: 65536K Total ...

  6. 【Luogu】P3705新生舞会(费用流+分数规划+二分答案)

    题目链接 本来以为自己可以做出来,结果……打脸了 (貌似来wc立了好几个flag了,都没竖起来) 不过乱蒙能蒙出一个叫“分数规划”的东西的式子还是很开心的 观察$C=\frac{a_{1}+a_{2} ...

  7. [BJOI2019]奥术神杖——AC自动机+DP+分数规划+二分答案

    题目链接: [BJOI2019]奥术神杖 答案是$ans=\sqrt[c]{\prod_{i=1}^{c}v_{i}}=(\prod_{i=1}^{c}v_{i})^{\frac{1}{c}}$. 这 ...

  8. [SDOI2017] 新生舞会 - 二分图最大权匹配,分数规划,二分答案

    有一个二分图,每个部都有 \(n\) 个点,每条边有两个参数 \(a_e, b_e\),求一种匹配,使得 \(\sum a_i / \sum b_i\) 最大 Solution 显然的分数规划,考虑二 ...

  9. 分数规划模板(洛谷P4377 [USACO18OPEN]Talent Show)(分数规划,二分答案,背包)

    分数规划是这样一个东西: 给定若干元素,每个元素有两个属性值\(a_i,b_i\),在满足题目要求的某些限制下选择若干元素并求出\(\frac{\sum a}{\sum b}\)的最大值. 如果没有限 ...

随机推荐

  1. 【代码优化】C#遍历所有控件(Control方法)

    直接上代码: /// <summary> /// 判断价格是否可以购买技能的方法 /// </summary> /// <param name="btnBuyA ...

  2. Javascript判断参数类型

    function (options, param) { alert(typeof options); if (typeof options == "string") { alert ...

  3. 使用Filezilla Server配置FTP服务器

    一.下载Filezilla  Server 官网网址:https://filezilla-project.org 二.安装Filezilla  Server   Filezilla  Server的安 ...

  4. Content Security Policy (CSP)内容安全策略

    CSP简介 Content Security Policy(CSP),内容(网页)安全策略,为了缓解潜在的跨站脚本问题(XSS攻击),浏览器的扩展程序系统引入了内容安全策略(CSP)这个概念. CSP ...

  5. js对象的深入理解(六)

    一.对象的创建(四种模式)1.工厂模式工厂模式示例: function createPerson(name,age){ var obj = { name:name, age:age, sayName: ...

  6. vue mixins是什么及应用

    mixins是什么? 官网对此的解释比较文绉绉,通俗的理解很简单,就是提供功能抽象 如A,B,C ...Z等很多个页面用到同一个功能,此时的做法就应该把该功能抽象出来,mixins就是干这个的 当然, ...

  7. JavaScript之DOM节点操作

    a.appendChild(b)  追加标签 a是b的父级,将b追加到a中 追加标签  a.insertBefore(b,c);  a是b和c的父级,在c前面插入b 删除标签  a.removeCli ...

  8. Git查看某一个文件的历史提交信息

    工作中我们有时候想要查看某一个文件的历史提交版本,] 还想看都修改过那些内容,那么这两个简单的命令就会帮到你了, 话不多说,comeBaby...... 1,首先查看一个文件的历史提交信息 git l ...

  9. JavaScript变量存储浅析(二)

    Hello,上一篇(http://www.cnblogs.com/souvenir/p/4969399.html)我们简单的分享了JS中的变量存储原理,但是并未结束,我们漏掉了什么. 对了,就是关于对 ...

  10. angular 升级到angular8 以及报错信息解决

    1.升级全局angular-cli npm install -g @angular/cli@latest 2.升级项目内 angular-cli (在需要升级的项目中运行) npm i @angula ...