1 条题解

  • 0
    @ 2026-4-19 20:08:38
    /*****************************************
    Problem Name  : 
    ******************************************/
    #include <queue>
    #include <math.h>
    #include <stack>
    #include <stdio.h>
    #include <iostream>
    #include <string.h>
    #include <algorithm>
    using namespace std;
    #define LL long long
    const int N = 1e5 + 10;
    const double eps = 1e-5;
    int n , m;
    double a[N];
    double g[N];
    bool cheak(double x)
    {
    	g[0] = 0;
    	for(int j = 1 ; j<= n; j++)
    	    g[j] = a[j-1] - x + g[j-1];
    
    	double minn = 0;
    	for(int i = m , j = 0; i <= n ; j++,i++ )
    	{
    	    minn = min(g[j],minn);
    		if(g[i] - minn >= 0)
    			return true;
    	}
    	return false;
    }
    int main()
    {
    	cin >> n >> m;
    	for(int i = 0 ; i< n ; i++)
    		cin >> a[i];
    	double l , r;
    	l = 0 , r = 2000;
    	while( r - l > eps)
    	{
    		double mid = (l + r) /2;
    		if(cheak(mid))
    			l = mid;
    		else 
    			r = mid;
    	}
    	cout << (int)(r*1000) <<  endl;
    }
    

    信息

    ID
    358
    时间
    1000ms
    内存
    512MiB
    难度
    9
    标签
    递交数
    31
    已通过
    4
    上传者