2 条题解
-
6
让我们发扬人类智慧。
根据数学直觉,答案所在区间不会太长。
于是枚举长度为 的区间便可以找到答案。
令 x=5000,可以 500 ms 内轻松通过。\
AC code
#include<bits/stdc++.h> using namespace std; #define fi first #define se second #define pb push_back #define int long long const int N = 2e5+10; long long a[N]; long long sum[N]; void solve() { return; } int u,v,n; int p,q; signed main() { cin>>n>>u>>v; p=0;q=1; for(int i=1;i<=n;i++) cin>>a[i],a[i+n]=a[i]; for(int i=1;i<=2*n;i++) sum[i]=sum[i-1]+a[i]; for(int i=((u+1)/2)*2;i<=min(u+5000,v);i+=2) { long long maxn=0; for(int j=1;j+i-1<=2*n;j++) { // cout<<j<<' '<<sum[j+i-1]<<' '<<sum[j-1]<<'\n'; maxn=max(maxn,sum[j+i-1]-sum[j-1]); } if(maxn*q>p*i) p=maxn,q=i; } // cout<<p<<' '<<q<<'\n'; int tmp=__gcd(p,q); p/=tmp;q/=tmp; cout<<p; if(q>1) cout<<'/'<<q; return 0; }
信息
- ID
- 797
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- (无)
- 递交数
- 76
- 已通过
- 3
- 上传者