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 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛