POJ-2018 Best Cow Fences 二分
2024-09-01 06:38:38
题意:找到一个连续区间,区间的长度至少大于f,现在要求这个区间的平均值最大。
题解:
二分找答案。
每次对于2分的mid值, 都把原来的区间减去mid, 然后找到一长度至少为f的区间, 他们的区间和>=0。
代码:
#include<cstdio>
#include<algorithm>
#include<vector>
#include<queue>
#include<map>
#include<iostream>
#include<cstring>
using namespace std;
#define Fopen freopen("_in.txt","r",stdin); freopen("_out.txt","w",stdout);
#define LL long long
#define ULL unsigned LL
#define fi first
#define se second
#define pb push_back
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define lch(x) tr[x].son[0]
#define rch(x) tr[x].son[1]
#define max3(a,b,c) max(a,max(b,c))
#define min3(a,b,c) min(a,min(b,c))
typedef pair<int,int> pll;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const LL mod = (int)1e9+;
const int N = 1e5 + ;
int n, f;
int a[N];
LL suf[N];
bool check(int mid){
for(int i = ; i <= n; ++i)
suf[i] = suf[i-] + a[i] - mid;
LL minval = ;
for(int i = f; i <= n; ++i){
minval = min(minval, suf[i-f]);
if(suf[i] - minval >= ) return true;
}
return false;
}
int main(){
scanf("%d%d", &n, &f);
for(int i = ; i <= n; ++i)
scanf("%d", &a[i]), a[i] *= ;
int l = , r = inf;
while(l <= r){
int m = l+r >> ;
if(check(m)) l = m + ;
else r = m - ;
}
printf("%d\n", l-);
return ;
}
最新文章
- 时隔一年再读到the star
- 00Linux学习及角色定义
- VB.NET中的除法运算符 与 C#中的除法运算符
- hdu 4864 Task (贪心 技巧)
- javascript字符串基本方法
- Netfilter-packet-flow.svg
- Tyvj-TOM的无穷序列
- Redis+Restful 构造序列号和压力测试【原创】
- ChartControl设置坐标轴范围
- mvc模式的理解
- abap test seam 和 TEST-INJECTION
- 微信团队分享:Kotlin渐被认可,Android版微信的技术尝鲜之旅
- Ubuntu下安装tomcat
- ORACLE——存储过程
- js计算两个日期相差天数
- source tree图谱
- JavaSE-基础语法(二)-系统类(java.lang.*)和工具类(java.util.*)
- |和||、&;&;和&;
- H264编码profile &; level控制
- jvm执行流程
热门文章
- Drools规则引擎-如果判断某个对象中的集合是否包含指定的值
- 【iOS】Xcode 离线文档
- java volatile关键字作用及使用场景
- python创建虚拟环境(Windows)
- Netty源码解析---服务端启动
- Java集合系列(四):HashMap、Hashtable、LinkedHashMap、TreeMap的使用方法及区别
- WEB基础(一)--JSP的9个内置对象
- Bootstrap笔记--快速入门
- R语言中如何找出在两个数据框中完全相同的行(How to find common rows between two dataframe in R?)
- 报error:getNetworkFromStore for nid failed while trying to build sandbox for cleanup: network