HDOJ-1166

来源:互联网 发布:淘宝网马云有多少股份 编辑:程序博客网 时间:2024/06/04 19:27

题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1166

始终不明为什么第一个代码不超时,然而第二个超时

#include<iostream>#include<cstdio>#include<cstring>const int MAX=50010;int s[MAX];int n;int Sum[MAX];using namespace std;void Add(){    int a,b,i;    scanf("%d%d",&a,&b);    {     for(i=a;i<=n;i++)     Sum[i]+=b;    }}void Sub(){    int a,b,i;    scanf("%d%d",&a,&b);    {     for(i=a;i<=n;i++)     Sum[i]-=b;    }}void Query(){    int a,b,i;    int sum;    scanf("%d%d",&a,&b);    printf("%d\n",Sum[b]-Sum[a-1]);}int main(){    int t,i,j,k=1,x,y;    char a[10];    scanf("%d",&t);    for(i=0;i<t;i++)    {        printf("Case %d:\n",k++);        memset(Sum,0,sizeof(Sum));        scanf("%d",&n);        for(j=1;j<=n;j++)        {         scanf("%d",&s[j]);         Sum[j]=(Sum[j-1]+s[j]);        }        scanf("%s",&a);        while(a[0]!='E')        {            if(a[0]=='A')            {                Add();            }            else if(a[0]=='S')            {                Sub();            }            else            Query();            scanf("%s",&a);        }    }    return 0;}

#include<iostream>#include<cstdio>#include<cstring>using namespace std;int a[50010],sum[50010];int Query(int x,int y){int i,c=0;for(i=x-1;i<y;i++) c+=a[i];return c;}int main(){    int t,n,i,j,k,l,b,c;    scanf("%d",&t);    for(k=1;k<=t;k++)    {        memset(sum,0,sizeof(sum));        scanf("%d",&n);        c=0;        char zl[10]={};        for(l=0;l<n;l++)            scanf("%d",&a[l]);        while(scanf("%s",&zl)&&zl[0]!='E')        {            scanf("%d%d",&j,&b);            if(zl[0]=='Q')            {sum[c]=Query(j,b);                c++;            }            else if(zl[0]=='A')            {                a[j-1]+=b;            }            else if(zl[0]=='S')            {                a[j-1]-=b;            }        }        printf("Case %d:\n",k);        for(i=0;i<c;i++)            printf("%d\n",sum[i]);    }    return 0;}


求路过的大神解释~

1 0