【藍橋杯練習--二分】789. 數的範圍
二分的時間複雜度是O(log n)
789. 數的範圍
本題使用遍歷查詢會超時,應使用二分
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <math.h>
using namespace std;
int main()
{
//讀取資料
int n, q;
cin >> n >> q;
int arr[n];
int tar[q];
for(int i=0; i<n; i++) cin >> arr[i];
for(int i=0;i<q;i++) scanf("%d", &tar[i]);
//二分模版
for(int i=0; i<q; i++) //遍歷q次
{
//右端點 第一個比tar大的數
int l=0, r=n-1;
while(l<r)
{
int mid = l + r >> 1;
if(arr[mid]>=tar[i]) r=mid;
else l=mid+1;
}
int a=0;
if(arr[l]==tar[i]) a=l;
else a=-1;
l=0, r=n-1;
while(l<r)
{
int mid = l + r + 1 >> 1;
if(arr[mid]<=tar[i]) l=mid;
else r=mid-1;
}
int b=0;
if(arr[l]==tar[i]) b=l;
else b=-1;
cout << a << " " << b << endl;
}
return 0;
}
相關文章
- 藍橋杯:基礎練習 查詢整數
- 【藍橋杯】練習題目彙總
- 藍橋杯-M次方根(實數二分)
- 藍橋杯訓練2
- 藍橋杯試題 基礎練習 特殊迴文數
- 藍橋杯:入門訓練 Fibonacci數列
- 藍橋杯練習系統題目集
- 藍橋杯基礎練習-找出唯一成對的數
- 2017年藍橋杯A組-分巧克力(整數二分)
- 藍橋杯 (java)演算法訓練 數對Java演算法
- 藍橋杯—演算法訓練演算法
- 藍橋杯--演算法訓練演算法
- 藍橋杯-帶分數
- 藍橋杯-排列序數
- 藍橋杯 整數拼接
- [藍橋杯][演算法訓練VIP]方格取數演算法
- 藍橋杯練習試題程式碼及講解
- [藍橋杯][基礎練習VIP]矩形面積交
- 藍橋杯-買不到的數目
- 藍橋杯——特別數的和
- 問題 1462: [藍橋杯][基礎練習VIP]Huffuman樹
- 藍橋杯
- 藍橋杯-波動數列
- 藍橋杯-合併數列
- 藍橋杯學習路線
- 藍橋杯-跳石頭(二分法)
- 藍橋杯訓練--母牛的故事(很清晰的思路)
- [Java] 藍橋杯ALGO-117 演算法訓練 友好數JavaGo演算法
- 藍橋杯-連號區間數
- 藍橋杯-子 2023 / 雙子數
- 藍橋杯真題:純質數
- 發現一個可以練習藍橋杯VIP題目的網址
- 藍橋杯注意的地方
- 藍橋杯 買瓜
- 藍橋杯-分巧克力
- 藍橋杯-N皇后
- 藍橋杯真題
- 藍橋杯 剪格子