标签:efi std 写法 ring class direct stream repr 简单
以列车调度为例子吧 这里用一个写法比较简单的二分 把范围放小以后 就不用那么费脑子了。,。
#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];//拼接上一个
else
{
int pos=my_lower_bound(d,len,a[i]);//找到第一个比a[i]大的pos
// cout<<pos<<endl;
d[pos]=a[i];
}
}
cout<<len<<endl;
return 0;
}
标签:efi std 写法 ring class direct stream repr 简单
原文地址:http://www.cnblogs.com/z1141000271/p/6576480.html