题目链接
题意
给出一首歌,有n种音符,每种音符需要b[i]秒,从0开始,0到b[0]为第一个音符,b[0]到b[0]+b[1]为第二个音符……… 给出q个问题,问在x处为什么音符
思路
- 将每个区间的左边界记录一下,然后二分查找
参考代码
#include<bits/stdc++.h>
using namespace std;
int n,q;
int aa[50100];
int bb[50100];
int main()
{
cin>>n>>q;
for(int i=0; i<n; i++)
cin>>aa[i];
bb[0]=0;
for(int i=1; i<n; i++)
{
bb[i]=aa[i-1]+bb[i-1];
}
int tmp=0;
for(int i=0;i<q;i++)
{
cin>>tmp;
int x=upper_bound(bb,bb+n,tmp)-bb;
cout<<x<<endl;
}
}