B. Worms

题意:输入一个数n,再输入n个数,表示第i层有a[i]个虫。输入一个数m,表示查询m次,再输入一个数q,查询q所在的层数并输出。

题解:在几次尝试中,发现在查询中,最好不要有循环(会超时),最好是可以直接输出。需要在查询外处理好。

在输入时,把每层的虫都标记上相应的层数,比如第一层有5只虫,就让a[1]到a[5]都为1,实现标记。在之后查询时,就可以直接查到对应的时间,避免超时了。另外,数组要开大一些,至少10e6.

ACcode:

int main()
{
int n, a[1000010] = {0}, m, b, c;
cin >> n;
int c1=1;
for (int i = 1; i <= n; i++)
{
cin >> c;
for (int j =1 ; j <= c; j++)
a[c1++] = i;
}
cin >> m;
while (m--)
{
cin >> b;
cout << a[b]<<endl;
}
return 0;
}

 

posted @ 2021-02-17 16:26  Uiney  阅读(57)  评论(0编辑  收藏  举报