【CF#706B】 Interesting drink (二分)
生活随笔
收集整理的這篇文章主要介紹了
【CF#706B】 Interesting drink (二分)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題干:
?
瓦西里喜歡在努力工作后休息,所以你可能經常在附近的一些酒吧見到他。他喜歡 "Beecola",可以從?n?個不同的商店買到。在第?i?個商店的價格為?xi?元。
瓦西里計劃購買他最喜歡的飲料?q?次。在第?i?天他能花?mi?元。他想知道每天他能在多少個商店中買這些飲料。
Input
第一行包含一個整數?n?(1?≤?n?≤?100?000)?— 表示商店的數量。
第二行包含?n?個整數?xi?(1?≤?xi?≤?100?000)?— 表示第?i個商店飲料的價格。
第三行包含一個整數?q?(1?≤?q?≤?100?000)?— 表示天數。
之后?q?行每行包含一個整數?mi?(1?≤?mi?≤?109)?— 第?i?天能花的錢數。
Output
輸出?q?個整數。第?i?行表示第?i?天能在多少個商店中購買。
Example
Input
5 3 10 8 6 11 4 1 10 3 11Output
0 4 1 5?
題目大意:
? ?給你一些商店,100000個詢問,問每個詢問下,大于等于多少個商店的價格?
?
解題報告:
? ? 二分o(q*logn),可解。因為本題都是整數,所以用lowerbound,upperbound都可以。
?
AC代碼1:(lowerbound)
Select Code #include<bits/stdc++.h>using namespace std;int a[100000 + 5]; int main() {int n,q,op,ans;cin>>n;for(int i = 1;i <=n; i++) {scanf("%d",&a[i]);}scanf("%d",&q);sort(a+1,a+n+1);while(q--) {scanf("%d",&op);ans=lower_bound(a+1,a+n+1,op+1)-(a+1);printf("%d\n",ans);}return 0 ;}AC代碼2:(upperbound)
#include<bits/stdc++.h>using namespace std;int a[100000 + 5]; int b[5]={1,2,2,3,4}; int main() { // cout<< upper_bound(b,b+5,2)-b;int n,q,op,ans;cin>>n;for(int i = 1;i <=n; i++) {scanf("%d",&a[i]);}scanf("%d",&q);sort(a+1,a+n+1);while(q--) {scanf("%d",&op);ans=upper_bound(a+1,a+n+1,op)-(a+1);printf("%d\n",ans);}return 0 ;}總結: 無
?
?
總結
以上是生活随笔為你收集整理的【CF#706B】 Interesting drink (二分)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 重磅级新品官宣:华为全屋智能2.0将于7
- 下一篇: 【CodeForces - 1042A】