CF474B - Worms(二分搜索法+STL+入门级)

474B - Worms(源地址自⇔CF474B

Problem

9cedd00c4c1114da59b206c23de0a8d5.png

Example

5
2 7 3 4 9
3
1 25 11
1
5
3

748e939d94353ca6943c9b20203ef5d9.png

tag:

⇔二分法(binary search)、⇔STL

题意:

\(n\) 个碟子中的虫子数量分别为 \(a_1,a_2,…,a_n\),从第一个碟子开始一只一只的数虫子,询问第 \(b_i\) 只虫子在哪个碟子里。

思路:

一遍前缀和计算后使用二分查找。

本题写题解的意义在于熟悉STL自带的二分查找函数:lower_bound。

AC代码:

//A WIDA Project
#include<bits/stdc++.h>
const int MAX=1e6+5;
long long n,m,x,num=1,a[MAX];
int main(){
	ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin>>n;
	while(n-->0){
		cin>>x;
		a[num]=a[num-1]+x;
		num++;
	}
	cin>>m;
	while(m-->0){
		cin>>x;
		cout<<lower_bound(a,a+num,x)-a<<endl;
	}
	return 0;
}

错误次数:0次


文 / WIDA
2021.10.07成文
首发于WIDA个人博客,仅供学习讨论


更新日记:
2021.10.07 成文

posted @ 2021-10-07 15:25  hh2048  阅读(53)  评论(0编辑  收藏  举报