Z forlkG7777_ 2021-02-15 17:49 采纳率: 40%
浏览 106
已采纳

求助,代码时间超限,请大佬帮看看

锦姐姐作为魔法少女有很多魔法石,每个魔法石都有一个符文,符文是一个数字。 
锦姐姐想知道她拥有某一种魔法石的数量。 

 

输入

第一行输入一个数t,代表有t组数据 
每组数据的第一行输入两个数n,q,代表n个魔法石,q次询问 
接下来一行n个整数ai,表示每个魔法石的符文 
接下来q行,每行一个数x,代表符文为x 
数据范围:1<=t<=100,1<=n<=100000,1<=q<=1000,0<=ai<=100000,0<=x<=100000

输出

每组输出q行 
每行输出符文为x的魔法石的个数 

样例输入Copy

1
5 2
1 1 2 2 3
2
3

样例输出Copy

2
1

我的代码

#include<stdio.h>

int a[100005];

int main()

{

    int t;

    scanf("%d",&t);

    while(t--)

    {

        int i,n,q,x;

        scanf("%d %d",&n,&q);

        for(i=0;i<n;i++)

            scanf("%d",&a[i]);

            while(q--)

            {

                int temp=0;

                scanf("%d",&x);

                for(i=0;i<n;i++)

                {

                    if(a[i]==x)

                        temp+=1;

                }

                printf("%d\n",temp);

            }

    }

    return 0;

}

请问这种的该如何优化呢

  • 写回答

2条回答 默认 最新

  • 揽星辰. 2021-02-15 22:36
    关注

    我帮你改良了一下,试试我这个代码

    #include<stdio.h>
    #include<string.h>
    int a[100001];
    int main()
    {
        int t,i,n,q,x,y;
        scanf("%d",&t);
        while(t--)
        {
    		memset(a,0,sizeof(a));
            scanf("%d %d",&n,&q);
            for(i=0;i<n;i++)
    		{
                scanf("%d",&y);
    			a[y]++;
    		 }
                while(q--)
                {
                    scanf("%d",&x);
                    printf("%d\n",a[x]);
                }
        }
        return 0;
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化