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 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。