日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

hdu1025 Constructing Roads In JGShining#39;s Kingdom (nlogn的LIS)

發(fā)布時(shí)間:2025/3/19 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu1025 Constructing Roads In JGShining#39;s Kingdom (nlogn的LIS) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目鏈接


第一次寫(xiě)nlogn復(fù)雜度的LIS,紀(jì)念一下。


題目意思是說(shuō)。有兩條平行線。兩條平行線都有n個(gè)城市,都是從左到右標(biāo)記為1--n,一條線上是富有城市,一個(gè)是貧窮城市。輸入n。接下來(lái)有n行,p,r表示窮城市p和富有城市r

之間能夠建一條路(p的順序是1--n,一個(gè)貧窮城市僅僅相應(yīng)一個(gè)富有城市(弱爆的語(yǔ)文描寫(xiě)敘述能力T_T)),公路不能交叉。

問(wèn)最多能夠建多少條公路。


在別處看到的對(duì)nlogn解法的解釋吧算是:

時(shí)間復(fù)雜度:(NlogN):
除了算法一的定義之外,添加一個(gè)數(shù)組b,b[i]用以表示長(zhǎng)度為i最長(zhǎng)子序列的最后一個(gè)數(shù)最小能夠是多少。易證:i<j時(shí),b[i]<b[j]。


在二分查找時(shí),一直更新b[]內(nèi)容,設(shè)此時(shí)b的總長(zhǎng)度為k,
若1. arr[i] >= b[k], 則b[k+1] = arr[i];
若2. arr[i] <?b[k], 則在b[1..k]中用二分搜索大于arr[i]的最小值。返回其位置pos,然后更新b[pos]=arr[i]。


code例如以下(自己手寫(xiě)了一個(gè)二分,又用了下STL里面upper_bound,都能夠):

//#pragma comment(linker,"/STACK:102400000,102400000") #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> //#define local using namespace std; const int maxn=500010; int poor[maxn],ro[maxn]; int n; int Binary_search(int x,int k) {int low=1,high=k;while(low<=high){int mid=(low+high)/2;if(ro[mid]<=x)low=mid+1;elsehigh=mid-1;}return low; } int lis() {int k=1;ro[k]=poor[1];for(int i=2;i<=n;i++){if(poor[i]>=ro[k])ro[++k]=poor[i];else{//int pos=Binary_search(poor[i],k);int pos=upper_bound(ro+1,ro+k+1,poor[i])-(ro);ro[pos]=poor[i];}}return k; } int main() { #ifdef localfreopen("in.txt","r",stdin);freopen("out.txt","w",stdout); #endif // localint cnt=0;while(~scanf("%d",&n)){int x,y;for(int i=0;i<n;i++){scanf("%d%d",&x,&y);poor[x]=y;}int ans=lis();printf("Case %d:\n",++cnt);if(ans<=1)printf("My king, at most %d road can be built.\n\n",ans);elseprintf("My king, at most %d roads can be built.\n\n",ans);}return 0; }

總結(jié)

以上是生活随笔為你收集整理的hdu1025 Constructing Roads In JGShining#39;s Kingdom (nlogn的LIS)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。