以列车调度为例子吧 这里用一个写法比较简单的二分 把范围放小以后 就不用那么费脑子了。,。
#include<iostream>
#include<algorithm>
#include<cstring>
#define inf 1000009
using namespace std;
int my_lower_bound(int a[],int len,int key)
{
int low=1,hight=len;
while(hight-low>6)
{
int mid=(hight+low)/2;
if(a[mid] > key ) hight=mid-1;
else low=mid+1;
}
for(int i=low;i<hight;i++)
{
if(a[i]>=key) return i;
}
}
int main()
{
int n;
cin>>n;
int d[100001],a[100001];
for(int i=0;i<n;i++) cin>>a[i];
int len=1;
d[0]=-1;
d[1]=a[0];
for(int i=1;i<n;i++)
{
if(a[i] > d[len]) d[++len]=a[i];