题意:给你一个正整数序列,让你删去一段区间内的数[l,r] $1<l\le r <n$

   使得剩余的数平均值最小$n\le 10^5$

1、不难想到暴力,用前缀和优化$O(n^2)$

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cctype>
#include<algorithm>
#include<cmath>
using namespace std;
#define int long long
#define olinr return
#define _ 0
#define love_nmr 0
#define DB double
inline int read()
{
int x=,f=;
char ch=getchar();
while(!isdigit(ch))
{
if(ch=='-')
f=-f;
ch=getchar();
}
while(isdigit(ch))
{
x=(x<<)+(x<<)+(ch^);
ch=getchar();
}
return x*f;
}
inline void put(int x)
{
if(x<)
{
x=-x;
putchar('-');
}
if(x>)
put(x/);
putchar(x%+'');
}
double ans=0x7fffffff;
int a[];
int s[];
int n;
signed main()
{
n=read();
for(int i=;i<=n;i++)
{
a[i]=read();
s[i]=s[i-]+a[i];
}
for(int i=;i<n;i++)
for(int j=i;j<n;j++)
{
int tot=s[n]-(s[j]-s[i-]);
ans=min(ans,(double)(tot)/(double)(n-(j-i+)));
}
printf("%.3lf",ans);
olinr ~~(^_^)+love_nmr;
}

暴力

2、正解:二分答案!

    怎么二分呢(我没看出来)

    于是深(da)入(kai)思(ti)考(jie)

    发现对于暴力,可以变个形

    $\frac{sum[n]-(sum[j]-sum[i])}{n-(j-i)}\ge x(二分一个答案x)$

    $sum[n]-sum[j]+sum[i]\ge nx-jx+ix$

    $(sum[n]-nx)+(sum[i]-ix)-(sum[j]-jx)\ge 0$

    卧槽,好神奇

    那么,我们令$a=sum[i]-ix$

    直接O(n)看看答案是否成立,

    因此总复杂度$O(nlogn)$

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cctype>
#include<algorithm>
#include<cmath>
using namespace std;
#define int long long
#define olinr return
#define _ 0
#define love_nmr 0
#define DB double
inline int read()
{
int x=,f=;
char ch=getchar();
while(!isdigit(ch))
{
if(ch=='-')
f=-f;
ch=getchar();
}
while(isdigit(ch))
{
x=(x<<)+(x<<)+(ch^);
ch=getchar();
}
return x*f;
}
inline void put(int x)
{
if(x<)
{
x=-x;
putchar('-');
}
if(x>)
put(x/);
putchar(x%+'');
}
int s[];
int n;
double a[];
double minn;
double eps=1e-;
inline bool ok(double mid)
{
for(int i=;i<=n;i++)
a[i]=(double)s[i]-i*mid;
minn=a[];
for(int i=;i<n;i++)
{
if(a[n]-(a[i]-minn)<=) return false;
minn=min(minn,a[i]);
}
return true;
}
signed main()
{
n=read();
for(int i=;i<=n;i++)
s[i]=s[i-]+read();
double l=;
double r=(double)(s[n]-(s[n-]-s[]))/(double)(2.0);
while(r-l>=eps)
{
double mid=(double)(l+r)/(double)2.0;
if(ok(mid))
l=mid;
else
r=mid;
}
printf("%.3lf",l);
olinr ~~(^_^)+love_nmr;
}

    

    

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

  1. 洛谷P2115 [USACO14MAR]破坏Sabotage

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

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

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

  3. 洛谷2115 [USACO14MAR]破坏Sabotage

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

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

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

  5. [USACO14MAR]破坏Sabotage

    还是二分答案,发现我的$check$函数不太一样,来水一发题解 列一下式子 $$\frac{sum-sum[l,r]}{n-(r-l+1)}<=ans$$ 乘过去 $$sum-sum[l,r]& ...

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

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

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

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

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

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

  9. USACO Sabotage

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

随机推荐

  1. Linux打包下载命令

    语法:tar [主选项+辅选项] 文件或者目录使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用. 主选项: c 创建新的档案文件.如果用户想备份一个目录或是一些 ...

  2. Datapump tips

    同时导出多个schema下的表 $ expdp system/manager dumpfile=test.dmp logfile=test.log directory=TESTDIR schemas= ...

  3. 【知识碎片】SQL篇

    43.group by多个字段 查询每个班级男女生各多少人 Select count(id),xingbie,banji from tablename group by xingbie,banji 4 ...

  4. TCP/IP 笔记 1.3 IP:网际协议

    ---恢复内容开始--- I P是T C P / I P协议族中最为核心的协议.所有的 T C P.U D P.I C M P及I G M P数据都以I P数据报格式传输. 不可靠( u n r e ...

  5. springmvc 路径问题

    web项目中的相对路径可以分为二类: 1.以斜杠开头:以斜杠开头的又分为二类(分类依据是斜杠出现的位置):如果出现在java代码或者配置文件(xml,properties等),这个路径叫做后台路径. ...

  6. 第二部分 实习操作课程 第一节 ArcGIS Online的基本功能

  7. day17 12.复习

    最后能抽取成word文档或者是图片之类的. 1.jdbc介绍  jdbc是一套标准,可以让我们Java程序员通过Java代码直接操作数据库,这就够了.jdbc涉及到的包两个:java.sql,java ...

  8. LVS+keepalived搭建负载均衡

    安装环境:环境 centos4.4 LB:192.168.2.158(VIP:192.168.2.188) real-server1:192.168.2.187 real-server2:192.16 ...

  9. git 删除本地分支和远程分支

    (1)使用命令git branch -a 查看所有分支 其中,remote/origin/master表示的是远程分支 (2)删除远程分支 使用命令 git push origin --delete ...

  10. 基于IFC的施工过程模拟程序(4D BIM)