还是二分答案,发现我的$check$函数不太一样,来水一发题解

列一下式子

$$\frac{sum-sum[l,r]}{n-(r-l+1)}<=ans$$

乘过去

$$sum-sum[l,r]<=ans*(n-r+l-1)$$

即

$$\sum_{i=1}^{l-1}+\sum_{i=r+1}^{n}<=ans*(n-r+l-1)$$

$$\sum{(a_i-ans)}<=0$$

所以我们在$check$函数中,可以处理出$a_i-ans$数组

然后求个前缀和,后缀和,前缀最小值,后缀最小值,对于每个位置考虑这个位置的前缀最小和这个位置之后(因为不能一个不删)的后缀最小是否非负即可

#include<iostream>
#include<cstdio>
using namespace std;
const int maxn=1e5+;
const double eps=1e-;
int n,m[maxn];
double ans,sum1[maxn],sum2[maxn],mn1[maxn],mn2[maxn],a[maxn];
bool check(double x)
{
for(int i=;i<=n+;i++)
mn1[i]=mn2[i]=1e9;
for(int i=;i<=n;i++)
a[i]=m[i]-x;
for(int i=;i<=n;i++)
sum1[i]=sum1[i-]+a[i],mn1[i]=min(sum1[i],mn1[i-]);
for(int i=n;i;i--)
sum2[i]=sum2[i+]+a[i],mn2[i]=min(sum2[i],mn2[i+]);
for(int i=;i<n-;i++)
if(mn1[i]+mn2[i+]<=)
return ;
return ;
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",&m[i]);
double l=,r=;
while(r-l>eps)
{
double mid=(l+r)/;
if(check(mid))
r=mid-eps,ans=mid;
else
l=mid+eps;
}
printf("%.3lf\n",ans);
return ;
}

[USACO14MAR]破坏Sabotage的更多相关文章

  1. 洛谷2115 [USACO14MAR]破坏Sabotage

    https://www.luogu.org/problem/show?pid=2115 题目描述 Farmer John's arch-nemesis, Farmer Paul, has decide ...

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

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

  3. 洛谷P2115 [USACO14MAR]破坏Sabotage

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

  4. P2115 [USACO14MAR]破坏Sabotage

    题意:给你一个正整数序列,让你删去一段区间内的数[l,r] $1<l\le r <n$ 使得剩余的数平均值最小$n\le 10^5$ 1.不难想到暴力,用前缀和优化$O(n^2)$ #in ...

  5. 洛谷【P2115】[USACO14MAR]破坏Sabotage

    我对二分的理解:https://www.cnblogs.com/AKMer/p/9737477.html 题目传送门:https://www.luogu.org/problemnew/show/P21 ...

  6. LuoguP2115 [USACO14MAR]破坏Sabotage【二分答案】By cellur925

    本来是想找一道生成树的题做的...结果被洛咕的标签骗到了这题...结果是二分答案与生成树一点mao关系都没有.... 题目大意:给你一个序列,请你删去某一个$l~r$区间的值($2<=i< ...

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

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

  8. P2115 [USACO14MAR]破坏(二分答案)

    给定一串数,问删除中间一段,剩下的平均数最小是多少: 不容易想到这是个二分. $solution:$ 来手玩一点式子: 首先很容易想到一个前缀和$sum_i $表示i到1的前缀和,这样就能很容易地O( ...

  9. USACO Sabotage

    洛谷 P2115 [USACO14MAR]破坏Sabotage https://www.luogu.org/problem/P2115 JDOJ 2418: USACO 2014 Mar Gold 2 ...

随机推荐

  1. Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 2. 变量

    大家在中学就已经学过变量的概念了.例如:我们令 x = 100,则可以推出 x*2 = 200 试试下面这段 Python 代码 import turtle turtle.shape("tu ...

  2. Java获取当前运行方法所在的类和方法名

    很简单,直接看代码: public void showClassAndMethod() { System.out.println(this.getClass().getSimpleName() + & ...

  3. 搜索引擎(Solr-搜索详解)

    学习目标 1.掌握SOLR的搜索工作流程: 2.掌握solr搜索的表示语法及查询解析器 3.熟悉solr搜索的JSON格式 API Solr搜索流程介绍 回顾,使用 lucene进行搜索的步骤: So ...

  4. 洛谷 P2376 [USACO09OCT]津贴Allowance 解题报告

    P2376 [USACO09OCT]津贴Allowance 题目描述 作为创造产奶纪录的回报,\(Farmer\) \(John\)决定开始每个星期给\(Bessie\)一点零花钱. \(FJ\)有一 ...

  5. 前端学习 -- Css -- display和Visibility

    display 将一个内联元素变成块元素,通过display样式可以修改元素的类型.可选值: 1 inline:可以将一个元素作为内联元素显示. 2 block: 可以将一个元素设置块元素显示. 3 ...

  6. [0,x)的随机数

    #include <cstdio> #include <cstdlib> #include <cmath> #include <cstring> #in ...

  7. UiAutomator2.0入门

    总是听说UiAutomator这个框架,但从来没有使用过.找了篇入门,实践一下.实践之后感觉,uiautomator写测试代码,还是有点费劲.接口名比较多,比较长.网易的atx里使用的uiautoma ...

  8. Docker应用五:使用Dockerfile部署MongoDB

    在Docker容器中部署MongoDB 不做铺垫,直接开撸: 一.软件准备: docker(已安装) MongoDB-3.2.0.tgz 二.准备配置文件mongo.conf port=27017 d ...

  9. 「Vue」vue cli3项目打包为APP方法及坑点

    1.执行npm run build之后生成dist文件夹 2.打开HBuilderX新建一个APP项目 3.把dist文件夹里的所有文件拷贝替换到APP文件夹下 4.打开manifest.json文件 ...

  10. 【转载】SQL注入原理讲解

    这几篇文章讲的都很不错,我看了大概清除了sql注入是怎么一回事,打算细细研究一下这个知识,另写一篇博客: 原文地址:http://www.cnblogs.com/rush/archive/2011/1 ...