zoukankan      html  css  js  c++  java
  • Best Cow Fences【二分】

    ##题目大意:
    给出一个数列,求长度超过LL的平均值最大的子串。


    ##思路:
    考虑二分答案,将a[i]a[i]全部减去ansans,那么题目转化为“求长度超过LL的和为正数的子串”。
    注意误差!


    ##代码:

    #include <cstdio>
    #include <iostream>
    #include <cmath>
    #define Inf 1e9
    using namespace std;
    
    int n,m;
    double l,r,mid,a[100011],s[100011],minn,ans;
    
    int main()
    {
    	
    	scanf("%d%d",&n,&m);
    	for (int i=1;i<=n;i++)
    	 scanf("%lf",&a[i]);
    	l=-Inf;
    	r=Inf;  //边界
    	while (r-l>1e-5)
    	{
    		ans=-Inf;
    		minn=Inf;
    		mid=(l+r)/2;
    		for (int i=1;i<=n;i++)
    		 s[i]=a[i]-mid+s[i-1];  //前缀和
    		for (int i=m;i<=n;i++)
    		{
    			minn=min(minn,s[i-m]);
    			ans=max(ans,s[i]-minn);  //求答案
    		}
    		if (ans>=0) l=mid;
    		 else r=mid;
    	}
    	cout<<int(r*1000);
    	getchar();
    	getchar();
    	getchar();
    	return 0;
    }
    
  • 相关阅读:
    [luogu]P1852跳跳棋
    StdDraw绘图
    Java-Timer-Stop
    人之初
    单例模式--延时初始化
    ubuntu忘记密码
    QT5 TK1 串口通信
    金秋十月
    级联分类器训练-----OpenCV
    Hu矩SVM训练及检测-----OpenCV
  • 原文地址:https://www.cnblogs.com/hello-tomorrow/p/11998764.html
Copyright © 2011-2022 走看看