Best Cow Fences(信息学奥赛一本通-T1434)
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Best Cow Fences(信息学奥赛一本通-T1434)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                【題目描述】
給定一個長度為n的正整數序列A。求一個平均數最大的,長度不小于L的子序列。
【輸入】
第一行,n和L;
n個正整數,表示A。
【輸出】
一個整數,表示答案的1000倍(不用四舍五入,直接輸出)。
【輸入樣例】
10 6?
 6 4 2 10 3 8 5 9 4 1?
【輸出樣例】
6500
【源程序】
#include<iostream> #include<cstdio> #include<cstdlib> #include<string> #include<cstring> #include<cmath> #include<ctime> #include<algorithm> #include<utility> #include<stack> #include<queue> #include<vector> #include<set> #include<map> #include<bitset> #define PI acos(-1.0) #define INF 0x3f3f3f3f #define LL long long #define Pair pair<int,int> const double EPS = 1E6; const int MOD = 1E9+7; const int N = 1000000+5; const int dx[] = {-1,1,0,0,-1,-1,1,1}; const int dy[] = {0,0,-1,1,-1,1,-1,1}; using namespace std;int n,f; double a[N]; double sub[N]; double sum[N]; int main() {scanf("%d%d",&n,&f);for(int i=1;i<=n;i++)scanf("%lf",&a[i]);double left=-1E6,right=1E6;while(right-left>1E-5){double mid=(left+right)/2.0;for(int i=1;i<=n;i++){sub[i]=a[i]-mid;//作差sum[i]=sum[i-1]+sub[i];//前綴和}double ans=-1E10;double minn=1E10;for(int i=f;i<=n;i++){minn=min(minn,sum[i-f]);ans=max(ans,sum[i]-minn);}if(ans>=0)left=mid;elseright=mid;}printf("%d\n",right*1000);return 0; }?
總結
以上是生活随笔為你收集整理的Best Cow Fences(信息学奥赛一本通-T1434)的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 元素(洛谷-P4570)
 - 下一篇: 分治 —— 莫队算法 —— 普通莫队