【題解】攔截導彈

(未完成)

#include<bits/stdc++.h>
using namespace std;
const int N=100010;
int a[N],f1[N],len1,f2[N],len2,num,n=1;
/*
  a[]:原數列 
  f1[]:最長不上升子序列1,記錄第一套攔截系統能攔截的導彈 
  len1:f1[]的長度
  f2[]:最長不上升子序列2,記錄第i套攔截系統能攔截的最高的高度 
  len2:f2[]的長度
  num:最少要配備的導彈攔截系統的數量
  n:導彈總數 
*/
int main()
{
    while (scanf("%d",&a[n])) n++; n--;
    for (int i=1;i<=n;i++)
    {
    	int k=lower_bound(f+1,f+1+len1,a[i])-a; //k=f[]從1~n中第一個≥a[i]的值的位置
	    f[k+1]=a[i];
	    len1=k+1;
	    k=lower_bound(f+1,f+1+len1,a[i])-a;
	}
    return 0;
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章