题解 | 音符

音符

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

全部评论

相关推荐

评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务