【二分】【前缀和】Best Cow Fences(poj P2018)

这篇博客介绍了如何利用二分查找和前缀和技巧来解决POJ P2018问题,即在给定田地和最小围栏字段数条件下,找到能最大化每字段平均奶牛数量的围栏布局。博客提供了问题的输入输出格式,思路解析及代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

农民约翰的农场由一排长的N(1 <= N <= 100,000)田地组成。每个字段包含一定数量的奶牛,1 <= ncows <= 2000.

FJ想要围绕这些字段的连续组建立围栏,以便最大化该块内每个字段的平均奶牛数量。该块必须至少包含F(1 <= F <= N)个字段,其中F作为输入给出。

在给定约束的情况下,计算最大化平均值的围栏布局。


输入:

第1行:两个以空格分隔的整数,N和F.
第2…N + 1行:每行包含一个整数,即字段中的奶牛数量。第2行给出字段1中的奶牛数量,第3行给出字段2中的数字,依此类推。


输出:

第1行:单个整数,是最大平均值的1000倍。不执行舍入,只打印1000 * ncows / nfields的整数。


样例输入:

10 6
6 
4
2
10
3
8
5
9
4
1

样例输出:

6500

思路:

这题可以转化为"是否存在一个长度不小于x的子段,子段和(求和)非负",然后我们就可以二分查找这个x,中间还要利用前缀和求和。


C o d e Code Code

#include<cstdio>
#include<iostream>
#define
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值