纯前后缀方法
2026-09-01 15:28:31
发布于:浙江
13阅读
0回复
0点赞
一次前缀和,一次后缀最小值
#include<iostreem>
using namespace std;
const int mn = 1e5+9;
typedef long long ll;
ll a[mn],d[mn],p[mn];
double sum[mn],maxx;
int main(){
int n;
cin >> n;
for(int i=1;i<=n;i++){
cin >> a[i];
d[i] = d[i-1]+a[i];
}
p[n] = a[n];
for(int i=n-1;i>=1;i--){
p[i] = min(p[i+1],a[i]);
}
for(int i=1;i<=n-2;i++){
int ans = d[n]-d[i];
ans-=p[i+1];
sum[i] = ans*1.0/(n-i-1);
maxx = max(maxx,ans*1.0/(n-i-1));
}
for(int i=1;i<=n-2;i++){
if(sum[i]==maxx)cout << i << "\n";
}
return o_o;
}
全部评论 3
正确✔答案#include <iostream>
using namespace std;
const int mn = 1e5+9;
typedef long long ll;
ll a[mn], d[mn], p[mn];
double sum[mn], maxx = 0;
int main(){
int n;
cin >> n;
for(int i=1;i<=n;i++){
cin >> a[i];
d[i] = d[i-1]+a[i];
}
p[n] = a[n];
for(int i=n-1;i>=1;i--){
p[i] = min(p[i+1], a[i]);
}
for(int i=1;i<=n-2;i++){
ll ans = d[n]-d[i];
ans -= p[i+1];
sum[i] = ans1.0/(n-i-1);
maxx = max(maxx, ans1.0/(n-i-1));
}
for(int i=1;i<=n-2;i++){
if(sum[i]==maxx) cout << i << "\n";
}
return 0;
}1周前 来自 广东
0#include<iostreem>
!
表感叹号的地方错了
iostream
不是
iostreem
a错写成e了1周前 来自 广东
0你有一个地方错了
1周前 来自 广东
0o
1周前 来自 浙江
0防直接复制的
1周前 来自 浙江
0














有帮助,赞一个