社区讨论

一种新的AC思路,求证

P1419寻找段落参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@lo7joh15
此快照首次捕获于
2023/10/27 02:55
2 年前
此快照最后确认于
2023/10/27 02:55
2 年前
查看原帖
也AC了,时间也OK,就是想问问各位大佬,有没有人能用数学证明,当使用一个区间N算出了最大平均值且区间增加为N+X时,该最大平均值均没有发生变化,那么不管区间再如何增大,平均值都不可能再发生变化了,并且这个X是可以明确求得的,谢谢。
AC程序如下(预估X值为2000):
CPP
#include<bits/stdc++.h>
using namespace std;
int n,s,t,flag,a[100005],ss[100005];
double ans=-10000000;
int main()
{
  cin>>n>>s>>t;
  for (int i=1;i<=n;i++){
  	scanf("%d",&a[i]);
  	ss[i]=ss[i-1]+a[i];
  }  
  for (int i=s;i<=t;i++){
  	for (int j=i;j<=n;j++)
  	  if(double(ss[j]-ss[j-i])/i>ans){ 
		ans=double(ss[j]-ss[j-i])/i;
		flag=i;
    }
    if (i-flag>2000) break;
  }
  printf("%.3f",ans);
  return 0;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...