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;
}