竞赛讨论区 > 神奇的问题,输入从全局数组改成全局变量就只有80分?求解
头像
在加班的lzh很想在家办公
发布于 2022-10-07 22:02 浙江
+ 关注

神奇的问题,输入从全局数组改成全局变量就只有80分?求解



同样的代码,输入不用数组,只有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) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐