社区讨论
灵异事件求解
P4086[USACO17DEC] My Cow Ate My Homework S参与者 3已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mk2kyiis
- 此快照首次捕获于
- 2026/01/06 20:43 上个月
- 此快照最后确认于
- 2026/01/10 09:55 上个月
以下是我这题的代码(使用后缀和)
CPP#include <bits/stdc++.h>
#define int long long
using namespace std;
int n,a[100010],suc[100010],mn[100010],ans;
float mx;
signed main(){
cin>>n;
for (int i=1;i<=n;i++) cin>>a[i];
for (int i=n;i>=1;i--) suc[i]=suc[i+1]+a[i];
memset(mn,0x3f3f3f,sizeof(mn));
for (int i=n;i>=1;i--) mn[i]=min(mn[i+1],a[i]);
for (int i=1;i<=n-2;i++){
if ((suc[i+1]-mn[i+1])*1.0/(n-i-1)>mx){
mx=(suc[i+1]-mn[i+1])*1.0/(n-i-1);
ans=i;
}
}
for (int i=1;i<=n-2;i++){
if ((suc[i+1]-mn[i+1])*1.0/(n-i-1)==mx){
cout<<i<<endl;
}
}
return 0;
}
然而挂成了 20 pts。
于是我下载了这题第二个数据(答案是 20),然后在 20 时输出。
CPP#include <bits/stdc++.h>
#define int long long
using namespace std;
int n,a[100010],suc[100010],mn[100010],ans;
float mx;
signed main(){
cin>>n;
for (int i=1;i<=n;i++) cin>>a[i];
for (int i=n;i>=1;i--) suc[i]=suc[i+1]+a[i];
memset(mn,0x3f3f3f,sizeof(mn));
for (int i=n;i>=1;i--) mn[i]=min(mn[i+1],a[i]);
for (int i=1;i<=n-2;i++){
if ((suc[i+1]-mn[i+1])*1.0/(n-i-1)>mx){
mx=(suc[i+1]-mn[i+1])*1.0/(n-i-1);
ans=i;
}
}
for (int i=1;i<=n-2;i++){
if ((suc[i+1]-mn[i+1])*1.0/(n-i-1)==mx){
cout<<i<<endl;
}
if (i==20){
cout<<(suc[i+1]-mn[i+1])*1.0/(n-i-1)<<" "<<mx<<endl;
}
}
return 0;
}
输出:248.345 248.345
但是前面竟然没输出 20!
不是哥们,248.345 难道不和 248.345 相同吗?!
于是我将第 5 行的 float 改成 double:
CPP#include <bits/stdc++.h>
#define int long long
using namespace std;
int n,a[100010],suc[100010],mn[100010],ans;
double mx;
signed main(){
cin>>n;
for (int i=1;i<=n;i++) cin>>a[i];
for (int i=n;i>=1;i--) suc[i]=suc[i+1]+a[i];
memset(mn,0x3f3f3f,sizeof(mn));
for (int i=n;i>=1;i--) mn[i]=min(mn[i+1],a[i]);
for (int i=1;i<=n-2;i++){
if ((suc[i+1]-mn[i+1])*1.0/(n-i-1)>mx){
mx=(suc[i+1]-mn[i+1])*1.0/(n-i-1);
ans=i;
}
}
for (int i=1;i<=n-2;i++){
if ((suc[i+1]-mn[i+1])*1.0/(n-i-1)==mx){
cout<<i<<endl;
}
if (i==20){
cout<<(suc[i+1]-mn[i+1])*1.0/(n-i-1)<<" "<<mx<<endl;
}
}
return 0;
}
A 了!
不是,这是什么灵异事件,求大佬解答
悬 1 关
回复
共 3 条回复,欢迎继续交流。
正在加载回复...