同样的代码,输入不用数组,只有80分,改成数组输入,就变成100分?问题 在哪里?
100分代码:(其他都不变,只把a从数组改成普通全局变量,就只有80分)
#include<bits/stdc++.h> #define maxN 10005 #define gl 10080 #define maxtime 240 #define time 400 using namespace std; long long n,a[maxN]; long long f[maxN],ans=0,tmp1=0,tmp2=0; int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; f[i]=f[i-1]+a[i]; if(a[i]>=maxtime&&ans==0) ans+=gl; } if(ans==gl) ans+=f[n]+time; else{ tmp1=time+gl+f[n]; long long r=1,le=0; while(r<=n){ if(f[r]-f[le]>=maxtime){ tmp2+=time; le=r-1; } r++; } tmp2+=time+f[n]; ans=min(tmp1,tmp2); } printf("%lld",ans); return 0; }80分代码:
#include<bits/stdc++.h> #define maxN 10005 #define gl 10080 #define maxtime 240 #define time 400 using namespace std; long long n,a; long long f[maxN],ans=0,tmp1=0,tmp2=0; int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a; f[i]=f[i-1]+a; if(a>=maxtime&&ans==0) ans+=gl; } if(ans==gl) ans+=f[n]+time; else{ tmp1=time+gl+f[n]; long long r=1,le=0; while(r<=n){ if(f[r]-f[le]>=maxtime){ tmp2+=time; le=r-1; } r++; } tmp2+=time+f[n]; ans=min(tmp1,tmp2); } printf("%lld",ans); return 0; }
全部评论
(0) 回帖