神奇的问题,输入从全局数组改成全局变量就只有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;
}



全部评论

相关推荐

缒梦&独舞:这家公司是这样的,去年给我实习offer了,不过也是面着玩儿的,他周六还要去做公益志愿活动
点赞 评论 收藏
分享
Southyeung:我说一下我的看法(有冒犯实属抱歉):(1)简历不太美观,给我一种看都不想看的感觉,感觉字体还是排版问题;(2)numpy就一个基础包,机器学习算法是什么鬼?我感觉你把svm那些写上去都要好一点。(2)课程不要写,没人看,换成获奖经历;(3)项目太少了,至少2-3个,是在不行把网上学习的也写上去。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务