int LIS(const int a[],int n)
{
int lis[n],pre[n],js=1;
lis[1]=1;
for(int i=2;i<=n;i++)
{
int l=1,r=js,m;
while(l<r)
{
m=(l+r)>>1;
if(a[lis[m]]<a[i]) l=m+1;
if(a[lis[m]]>a[i]) r=m;
}
if(r==1)
{
if(a[lis[1]]>a[i])
{
lis[1]=i;
continue;
}
}
if(r==js)
{
if(a[lis[js]]<a[i])
{
lis[++js]=i;
pre[i]=lis[js-1];
continue;
}
}
lis[r]=i;
pre[i]=lis[r-1];
}
return js;//返回長度
}
LIS(最長上升子序列)模板
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
HDU 2888 二維RMQ 模板
zqdnr
2020-07-08 10:23:09
模板與標準模板庫
chijianxingfeng
2020-07-08 03:15:41
最大匹配,花樹開花算法
xuezhongfenfei
2020-07-07 06:04:52
joomla模板下載地址彙總
a904003695
2020-07-07 00:49:43
Dijkstra(堆優化)
SHIT刘
2020-07-06 18:39:07
快速排序求第K小
wuzhuangtai00
2020-07-06 07:48:45
(擴展)中國剩餘定理(模板)
UniverseofHK
2020-07-06 03:44:13
文章標題 POJ 2104: K-th Number(主席樹)
Wang_SF2015
2020-07-05 17:13:23
文章標題 高斯消元解方程組(模板)
Wang_SF2015
2020-07-05 16:33:04
文章標題 HDU 1533 : Going Home (最小費用最大流)
Wang_SF2015
2020-07-05 16:33:04
文章標題 HDU 4280 :Island Transport (最大流--ISAP)
Wang_SF2015
2020-07-05 16:33:04