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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

HDU 1025 Constructing Roads In JGShining's Kingdom(DP+二分)

發(fā)布時(shí)間:2023/12/13 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU 1025 Constructing Roads In JGShining's Kingdom(DP+二分) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

點(diǎn)我看題目

題意 :兩條平行線上分別有兩種城市的生存,一條線上是貧窮城市,他們每一座城市都剛好只缺乏一種物資,而另一條線上是富有城市,他們每一座城市剛好只富有一種物資,所以要從富有城市出口到貧窮城市,所以要修路,但是不能從富有的修到富有的也不能從貧窮的修到貧窮的,只能從富有的修到貧窮的,但是不允許修交叉路,所以問你最多能修多少條路。

題意 :這個(gè)題一開始我瞅了好久都沒覺得是DP,后來二師兄給講了一下才恍然大悟。其實(shí)就是用到了DP中的那個(gè)最長(zhǎng)上升子序列,把題中貧窮城市的坐標(biāo)當(dāng)成數(shù)組的下標(biāo),跟其相連的富有城市的坐標(biāo)當(dāng)作數(shù)組的值,這樣的話,因?yàn)椴荒苡薪徊?#xff0c;所以只能一直往右,這就好比找最長(zhǎng)上升子序列,因?yàn)橛脴闼氐乃惴〞?huì)超時(shí)所以要用二分。

解題報(bào)告這里邊的解釋非常詳細(xì),就是怎么用二分去做,其實(shí)就是將找到的子序列保存到B數(shù)組里,但是往里插入的過程用的是二分。

?

//HDU 1025 #include <iostream> #include <stdio.h> #include <string.h>using namespace std;int dp[505000] ; int B[505000] ;int main() {int n ;int casee = 1 ;while(~scanf("%d",&n)){int a,b ;for(int i = 0 ; i < n ; i++){scanf("%d %d",&a,&b) ;dp[a] = b ;//這樣就相當(dāng)于去找dp這個(gè)數(shù)組的最長(zhǎng)上升子序列了 }int len = 1 ;B[1] = dp[1] ;for(int i = 2 ; i <= n ; i++)//這里掉了等號(hào)WA到死啊 {int low = 1 , high = len ;while(low <= high){int mid = (low+high) >> 1 ;if(B[mid] < dp[i]) low = mid+1 ;else high = mid - 1 ;}B[low] = dp[i] ;if(low > len) len++ ;}printf("Case %d:\n",casee++) ;if(len == 1)printf("My king, at most 1 road can be built.\n\n") ;else printf("My king, at most %d roads can be built.\n\n",len) ;}return 0; } View Code

?

轉(zhuǎn)載于:https://www.cnblogs.com/luyingfeng/p/3569595.html

總結(jié)

以上是生活随笔為你收集整理的HDU 1025 Constructing Roads In JGShining's Kingdom(DP+二分)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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