实数折磨人啊啊啊啊啊啊啊

好,实数应该是最反人类的东西了......

这个害得我调了0.5天才过。

大意是这样的:给你一个数列,求其中不少于f个的连续数的最大平均值。

不禁想起寒假的课程来...

此处应该二分ans,每次把数列减去ans后判断是否有不少于f的一段sum>=0

大喜过望,写了个二分,然后发现不会O(1)判断...

冥思苦想无果之后不由得去看题解。发现要维护前缀和和1~i-f+1的最小前缀和即可。

然后就被实数卡了一天。。。

最后发现还是写的朴素点好。要相信出题人头脑简单不会拿一大堆if来写二分。

AC代码:

 #include <cstdio>
#include <algorithm>
using namespace std;
const int INF = 0x7f7f7f7f, N = ;
const double eps = 1e-;
int f[N], n, F;
double a[N];
bool check(double k) {
for(int i=;i<=n;i++) {
a[i] = f[i] - k;
a[i] += a[i-];
}
double small = , sum=; // small != INF, small = 0
for(int i = F; i <= n; i++) {
sum = a[i] - small;
if(sum >= ) {
return true;
}
small = min(small, a[i-F+]);
}
return false;
} int main() {
//freopen("in.in","r",stdin);
//freopen("my.out","w",stdout);
scanf("%d%d",&n,&F);
int large = -INF, small = INF;
for(int i=;i<=n;i++) {
scanf("%d",&f[i]);
large = max(large, f[i]);
small = min(small, f[i]);
}
double l = small, r = large, mid;
while(r-l>eps) {
//printf("%.10lf %.10lf \n",l,r);
mid = (l + r) / ;
if(check(mid)) {
l = mid;
}
else {
r = mid;
}
} printf("%d",(int)(r*));
return ;
}

AC代码在此

POJ2018 Best Cow Fences 二分的更多相关文章

  1. POJ-2018 Best Cow Fences(二分加DP)

    Best Cow Fences Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 10174 Accepted: 3294 Desc ...

  2. loj#10012\poj2018 Best Cow Fences(二分)

    题目 #10012 「一本通 1.2 例 2」Best Cow Fences 解析 有序列\(\{a_i\}\),设\([l,r]\)上的平均值为\(\bar{x}\),有\(\sum_{i=l}^r ...

  3. POJ-2018 Best Cow Fences 二分

    题意:找到一个连续区间,区间的长度至少大于f,现在要求这个区间的平均值最大. 题解: 二分找答案. 每次对于2分的mid值, 都把原来的区间减去mid, 然后找到一长度至少为f的区间, 他们的区间和& ...

  4. poj2018 Best Cow Fences[二分答案or凸包优化]

    题目. 首先暴力很好搞,但是优化的话就不会了.放弃QWQ. 做法1:二分答案 然后发现平均值是$ave=\frac{sum}{len}$,这种形式似乎可以二分答案?把$len$移到左边. 于是二分$a ...

  5. POJ2018 Best Cow Fences —— 斜率优化DP

    题目链接:https://vjudge.net/problem/POJ-2018 Best Cow Fences Time Limit: 1000MS   Memory Limit: 30000K T ...

  6. [USACO2003][poj2018]Best Cow Fences(数形结合+单调队列维护)

    http://poj.org/problem?id=2018 此乃神题……详见04年集训队论文周源的,看了这个对斜率优化dp的理解也会好些. 分析: 我们要求的是{S[j]-s[i-1]}/{j-(i ...

  7. Poj2018 Best Cow Fences

    传送门 题目大意就是给定一个长度为 n 的正整数序列 A ,求一个平均数最大的,长度不小于 L 的子序列. 思路: 二分答案. Code: #include<iostream> #incl ...

  8. poj2018——Best Cow Fences

    Description Farmer John's farm consists of a long row of N (1 <= N <= 100,000)fields. Each fie ...

  9. 一本通 1434:【例题2】Best Cow Fences

    Best Cow Fences 二分答案 + 前缀和 个人认为题意没有表述清楚,本题要求的是满足题意的连续子序列(难度大大降低了有木有). 本题的精度也是非常令人陶醉,请您自行体会吧! #includ ...

随机推荐

  1. git客户端下载 和安装

    网址  https://git-scm.com/download/win 点击next 说明: (1)图标组件(Addition icons) : 选择是否创建桌面快捷方式. (2)桌面浏览(Wind ...

  2. Centos6.8 安装nginx

    1.安装相关依赖 (1)yum install gcc 备注:可以通过gcc -v 查看版本信息,来确定是否安装过. (2)yum install pcre-devel (3)yum install ...

  3. snv的使用

    1.搭建SVN服务器 (1)直接安装 (2)创建工号,分组,分配权限(图形化界面的直接操作,非图形界面的需要改配置文件conf文件夹下) (3)创建仓库,D:\Repositories\OA:cmd命 ...

  4. linux命令logger使用

    先从别的地方抄过来全部的解释,如下: **options (选项):** -d, --udp 使用数据报(UDP)而不是使用默认的流连接(TCP) -i, --id 逐行记录每一次logger的进程I ...

  5. poj-1386(欧拉回路)

    题意:给你n个单词,每个单词可以和另一个单词连接,前提是(这个单词的尾字母等下一个单词的首字母),问你有没有一种连法能够连接所有的单词: 解题思路:每个单词可以看成是首字母指向尾字母的一条边,那么就变 ...

  6. 【C/C++】龙格库塔+亚当姆斯求解数值微分初值问题

    /* 解数值微分初值问题: 龙格-库塔法求前k个初值 + 亚当姆斯法 */ #include<bits/stdc++.h> using namespace std; double f(do ...

  7. java基础之Number

    1.Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper ...

  8. raise missingsectionheadererror:file containe no section headers问题解决

    本人亲测,遇到这个问题,就换到管理员方式运行命令 因为太小白,所以这次重新装包的时候切换到D盘了,想着省一点儿C盘内存,结果,每次pip install安装的时候都是这个问题,中间还有什么反序列失败, ...

  9. kubernetes job的原理

    job例子: apiVersion: batch/v1 #job的apiVersion kind: Job #资源类型为job metadata: labels: name: busybox name ...

  10. 第三方登陆——QQ登陆详解

    申请地址 QQ互联:https://connect.qq.com/index.html 腾讯开放平台:https://open.tencent.com/ 注册账号 登陆 进入QQ互联,点击登陆 资料填 ...