日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2020.03.18模拟赛17(第二题)

發布時間:2023/12/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2020.03.18模拟赛17(第二题) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2.【GDKOI訓練】音樂節拍(mnotes)

題目描述

FJ準備教他的奶牛彈奏一首歌曲,歌曲由N(1<=N<=50,000)種音節組成,編號為1到N,而且一定按照從1到N的順序進行彈奏,第i種音節持續B_i(1<=B_i<=10,000)個節拍,節拍從0開始計數,因此從節拍0到節拍B_1-1彈奏的是第1種音節,從B_1到B_1+B_2-1彈奏的是第2種音節,依此類推。
最近奶牛對彈琴不感興趣了,他們感覺太枯燥了。所以為了保持奶牛們注意力集中,FJ提出Q(1<=Q<=50,000)個問題,問題的格式都是“第T次節拍彈奏的是哪種音節”
每個問題對應一個T_i(0<=T_i<=節拍總數-1)請你幫奶牛來解決。

輸入

第一行輸入兩個空格隔開的整數N和Q
第2至N+1行每行包含一個整數 B_i
第N+2-N+Q+1行每行包含一個整數T_i

輸出

輸出有Q行,每行輸出對應問題的答案。

樣例輸入

3 5
2
1
3
2
3
4
0
1

樣例輸出

2
3
3
1
1

正解
前綴和+二分查找
記住要用scanf和printf,不要用cin和cout,不然會超時
AC代碼

#include<iostream> #include<cstdio> using namespace std; long long n,q,x,s,l,r,m,a[50005]; void ef(int x) {s=0;//初值l=1;r=n;while(l<=r)//二分{m=(l+r)/2;if(x>=a[m-1]&&a[m]-1>=x){s=m;break;}//在范圍內就退出if(a[m]-1<x)l=m+1;else r=m-1;} } int main() {freopen("mnotes.in","r",stdin);freopen("mnotes.out","w",stdout);scanf("%d%d",&n,&q);for(int i=1;i<=n;i++){scanf("%d",&x);a[i]=a[i-1]+x;//前綴和}for(int i=1;i<=q;i++){scanf("%d",&x);ef(x);//二分printf("%d\n",s);}return 0; }

下面附本次比賽的其它題目

2020.03.18模擬賽17(第一題)
2020.03.18模擬賽17(第二題)
2020.03.18模擬賽17(第三題)
2020.03.18模擬賽17(第四題)
2020.03.18模擬賽17(總結)

謝謝

總結

以上是生活随笔為你收集整理的2020.03.18模拟赛17(第二题)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。