题解 | 音符
音符
https://www.nowcoder.com/practice/fbef4a433583436cbf1a7861a5c110d7
通过观察我们可以得到,通过前缀和刚好可以用下标表示音符,前缀和存储时间,然后再用upper_bound查找各个时间所处音符即可
#include<bits/stdc++.h>
#include <vector>
using namespace std;
#define int long long
const int INF = 0x3f3f3f3f3f3f3f3f;
//2 1 3
//2 3 6
void solve(){
int n,q;cin>>n>>q;
vector<int> b(n+1),pre(n+1);
for(int i=1;i<=n;i++) cin>>b[i],pre[i]=pre[i-1]+b[i];
while(q--){
int t;cin>>t;
int idx=upper_bound(pre.begin()+1,pre.end(),t)-pre.begin();
cout<<idx<<"\n";
}
}
signed main(){
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
int t=1;
// cin>>t;
while(t--){
solve();
}return 0;
}
网易游戏公司福利 603人发布
查看26道真题和解析