建设工程交易中心是什么seo关键词优化培训班
二分查找、二分答案基础知识
二分查找模版
【模版题】数的范围
输入样例
6 3
1 2 2 3 3 4
3
4
5
输出样例
3 4
5 5
-1 -1
思路:
对应两个模版,起始位置是对应第一个模版,即后面的都符合
终止位置对应第二个模拟,即前面的符合
#include<bits/stdc++.h>
#define int long long
using namespace std;const int N=100000+10;int a[N];signed main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n,q;cin>>n>>q;for(int i=0;i<n;i++)cin>>a[i];while(q--){int x;cin>>x;int l=0,r=n-1;while(l<r)//查找起始位置,右边符合 {int mid=(l+r)/2;if(a[mid]>=x)r=mid;elsel=mid+1;}if(a[l]!=x)//不存在cout<<"-1 -1"<<endl;else//查找终止位置 {cout<<l<<' ';//将起始位置输出 l=0,r=n-1;while(l<r){int mid=(l+r+1)/2;if(a[mid]<=x)l=mid;elser=mid-1;}//不用再判断是否存在 //输出终止位置 cout<<l<<endl;} }return 0;}
借教室
输入样例1
4 3
2 5 4 3
2 1 3
3 2 4
4 2 4
输出样例1
2
说明1
第一份订单满足后,这四天剩余的教室数为{0,3,2,3}
第二份订单要求第二天到第四天每天提供3个教室,而第三天剩余的教室数为 2,
因此无法满足。分配停止,通知第二个申请人修改订单。
输入样例2
4 1
2 5 4 3
2 1 3
输出样例2
0
思路: