本地运行没问题,提交全部RE。但稍微改一点就全AC

P1478 陶陶摘苹果(升级版)

forwhat00 @ 2019-11-15 17:48:04

#include<stdio.h>
int num,sp,ch,hh,ah[5005],asp[5005];
int main(){
    void in_to(int x,int y);
    float price_of(int x);
    int i,ii,j,jj,ij,total=0,to;
    scanf("%d %d",&num,&sp);
    scanf("%d %d",&ch,&hh);
    for(i=0;i<num;i++){
        scanf("%d %d",&ah[i],&asp[i]);

        if(ah[i]>ch+hh){num--;i--;continue;}

        for(ii=0,to=0;ii<i;ii++){
            if(price_of(i)>price_of(ii)){to=ii+1;}
        }
        in_to(i,to); 
    }

    for(i=0;i<num;i++){
        sp-=asp[i];
        if(sp>=0){
            total+=1;
        }
    }

    printf("%d\n",total);
    return 0;
}
void in_to(int x,int y){
    int th=ah[x],ts=asp[x];
    int i,j;
    //
    for(i=x;i!=y;i=j){
        j=i+((y>x)?1:-1);
         ah[i]= ah[j];
        asp[i]=asp[j];

    }
    //
    /*
    for(i=x;i>=y;i--){
        ah[i]= ah[i-1];
        asp[i]=asp[i-1];
    }
    */
    ah[y]=th;asp[y]=ts;
}

float price_of(int x){
    return asp[x];
    if(asp[x]>0)
        return ah[x]/asp[x];
    else
        return 999999;
}

就是上面的代码,直接提交全部RE,但使用注释的for循环代替前面的for循环就可以AC


by 天野_阳菜 @ 2019-11-15 17:55:16

新人求助,降雨量那题,本机正确提交RE


by 天野_阳菜 @ 2019-11-15 17:55:51

@forwhat00 你这个for循环第三个条件是i=j。有问题吧


by 天野_阳菜 @ 2019-11-15 17:56:36

j=i+((y>x)?1:-1);

这个为什么啊


by forwhat00 @ 2019-11-18 20:56:34

@天野_阳菜 当时写的应该是没问题的。不然本机测试会错。。。


|