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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

蓝桥杯节点选择(java)第一道树形dp分析

發(fā)布時間:2025/3/20 编程问答 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蓝桥杯节点选择(java)第一道树形dp分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

藍(lán)橋杯 節(jié)點(diǎn)選擇

問題描述
有一棵 n 個節(jié)點(diǎn)的樹,樹上每個節(jié)點(diǎn)都有一個正整數(shù)權(quán)值。如果一個點(diǎn)被選擇了,那么在樹上和它相鄰的點(diǎn)都不能被選擇。求選出的點(diǎn)的權(quán)值和最大是多少?

輸入格式
第一行包含一個整數(shù) n 。

接下來的一行包含 n 個正整數(shù),第 i 個正整數(shù)代表點(diǎn) i 的權(quán)值。

接下來一共 n-1 行,每行描述樹上的一條邊。

輸出格式
輸出一個整數(shù),代表選出的點(diǎn)的權(quán)值和的最大值。
樣例輸入
5
1 2 3 4 5
1 2
1 3
2 4
2 5
樣例輸出
12
樣例說明
選擇3、4、5號點(diǎn),權(quán)值和為 3 4 5 = 12 。
數(shù)據(jù)規(guī)模與約定
對于20%的數(shù)據(jù), n <= 20。

對于50%的數(shù)據(jù), n <= 1000。

對于100%的數(shù)據(jù), n <= 100000。

權(quán)值均為不超過1000的正整數(shù)。

分析

  • 看到藍(lán)橋杯的樹形dp題,剛開始看的很蒙蔽。從來沒做過樹形的dp,剛開始表示很難理解,當(dāng)時主要的疑惑點(diǎn)有一下幾點(diǎn):
    1:這個樹怎么解決?這么亂的一棵樹感覺根本無法下手,因為你不知道那個是根節(jié)點(diǎn),那個是子節(jié)點(diǎn)。輸出的結(jié)果又和那個有關(guān)系?
    2:樹形怎么dp?以前都是遇到線性區(qū)間的dp,樹形dp,怎么查找連續(xù)點(diǎn),就算找到連續(xù)的點(diǎn)交叉點(diǎn)如何處理?
  • 看了一些博客和文章之后,有了解到dp處理樹形的特殊手段:
    : 一般來說,樹形dp的每個節(jié)點(diǎn)都有一個選擇性,本題就是該店選擇和不選擇,dp[i][0]表示不選擇,dp[i][1]表示選擇該節(jié)點(diǎn)。
    :對于樹形dp,一般要和搜索結(jié)合(更確切的說是遞歸)結(jié)合,對于樹的劃分層次,一般是選擇一個點(diǎn),然后從這個點(diǎn)進(jìn)行往下搜索 ,他的鄰居都變成他的子節(jié)點(diǎn)。也就是相當(dāng)于從這個根節(jié)點(diǎn)除法,可能有很多分叉。也就是有很多分叉會到根節(jié)點(diǎn)。但是這有和dp有啥關(guān)系呢?dp是從尾到頭還是從頭到尾?
    :對于順序的選擇肯定是從尾部到頂部,因為dp要的是一個整合結(jié)果而不是分散求最值或者其他。那么還有問題就是那么多的跟節(jié)點(diǎn),那么多合的點(diǎn),還有反向路徑不好記錄,記錄的難度和開銷都超級大。如果從尾部推到dp還是有一定難度。
    :我們要先拋開整體看局部這個點(diǎn),對于某個單點(diǎn)來說(如果他是頭節(jié)點(diǎn)),分析到他的結(jié)果,如果取他那么他的兒子們都不能取,那么dp[i][1]=dp[兒子們][0] value[i];如果不取他,那么對于每個兒子來說要給最大的,那么dp[i][0]=max(dp[每個兒子][0],dp[每個兒子][1]);這樣就得到遞推式dp[x][0]=sum(max(dp[num][0],dp[num][1]));dp[x][1]=sum(dp[num][0]) value[i].
    :對于頭節(jié)點(diǎn)(可以任選),滿足④,對于頭節(jié)點(diǎn)的兒子也同樣滿足④,但是唯一不同的是要過濾頭節(jié)點(diǎn)(準(zhǔn)確的說是父節(jié)點(diǎn))。防止死循環(huán)。遞歸搜索的過程是雙向的過程,先去再回,我們可以同過先去構(gòu)造樹并且獲得后面的一些信息,然后根據(jù)后來得到的值進(jìn)行操作當(dāng)前等級的dp。
  • 總的來說這個樹形dp就是分析某個點(diǎn)的狀態(tài)方程,通過遞歸搜索進(jìn)行劃分樹。獲得結(jié)果。并且這題只有n-1條路徑,n個點(diǎn),不用考慮去重。
    附上代碼:
package 算法訓(xùn)練;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.StreamTokenizer; import java.util.ArrayList; import java.util.List; public class 節(jié)點(diǎn)選擇 {// static boolean jud[];static int dp[][];//dp數(shù)組static int value[];//保存權(quán)值static List <Integer>[]list;//鄰接表儲存圖。節(jié)省空間public static void main(String[] args) throws IOException {// TODO 自動生成的方法存根StreamTokenizer in=new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));in.nextToken();int n=(int)in.nval;value=new int[n];//權(quán)值dp=new int[n][2];list=new ArrayList[n];for(int i=0;i<n;i++) {list[i]=new ArrayList<>();}for(int i=0;i<n;i++){in.nextToken();value[i]=(int)in.nval;}for(int i=0;i<n-1;i++){in.nextToken(); int t1=(int)in.nval;in.nextToken();int t2=(int)in.nval;list[t1-1].add(t2-1);//添加路徑list[t2-1].add(t1-1); }dfs(0,-1);//理論上任意n之內(nèi)節(jié)點(diǎn)都可以,但是右側(cè)第一個理論上保證不是這個點(diǎn)的父親int value=max(dp[0][0], dp[0][1]);out.println(value);out.flush();}private static void dfs(int x, int y) {//當(dāng)前節(jié)點(diǎn),父親節(jié)點(diǎn)for(int i=0;i<list[x].size();i++){int num=list[x].get(i);if(num!=y)//不是父親節(jié)點(diǎn){dfs(num,x);dp[x][0]+=max(dp[num][0],dp[num][1]);dp[x][1]+=dp[num][0];}}dp[x][1]+=value[x];//加上自己的權(quán)值}private static int max(int i, int j) {// TODO 自動生成的方法存根return i>=j?i:j;}}

但是結(jié)果只能過7個,

看了下其他人沒優(yōu)化輸入的只能過5個超時。我用測試數(shù)據(jù)測試了一下原因是棧內(nèi)存溢出。苦逼的Java。。

也可能是因為我比較菜,,想不出好的方法,呵呵,。歡迎大佬踢場。。

總結(jié)

以上是生活随笔為你收集整理的蓝桥杯节点选择(java)第一道树形dp分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 色一五月 | 国产精品二区在线观看 | 亚洲欧美伊人 | 欧美一区二区三区四区视频 | 毛片基地视频 | 免费看欧美黄色片 | 欧美人xxx | 亚洲国产精品欧美久久 | jizz日本在线观看 | 天堂中文在线8 | 黄片毛片在线免费观看 | 91偷拍富婆spa盗摄在线 | 亚洲一区图片 | 亚洲国产精品999 | 国产成人综合欧美精品久久 | 国产亚洲精品成人无码精品网站 | www.天天色| 成人无高清96免费 | 今天最新中文字幕mv高清 | 成人免费黄色片 | 亚洲最大的成人网站 | 黄色另类小说 | 成人亚洲天堂 | 欧美变态口味重另类在线视频 | 99这里精品 | 婷婷四房综合激情五月 | 欧美日韩国产色 | 亚洲av电影天堂男人的天堂 | 肉丝肉足丝袜一区二区三区 | av导航网 | 国产伊人精品 | 国产精品乱码一区二区三区 | 精品二区在线观看 | 97干干 | 国产亚洲av综合人人澡精品 | 黄色一级黄色片 | 不许穿内裤随时挨c调教h苏绵 | 51久久| 国产精品999久久久 在线青草 | 91成年版| 香蕉精品视频在线观看 | 中文字幕自拍偷拍 | 色婷婷色婷婷 | 综合国产视频 | 久草精品视频 | 久久久av网站 | 精品在线观看视频 | 天天爱天天爽 | 日韩资源站 | 欧美精品一区二区成人 | 四川话毛片少妇免费看 | 久久久久久久久影院 | 久久久精品人妻一区二区三区色秀 | www.youjizz日本 | 人人妻人人玩人人澡人人爽 | 微拍福利一区二区 | 亚色视频 | www.五月婷婷.com | 潘金莲裸体一级淫片视频 | 91在线国产观看 | 一区二区三区不卡在线 | 久久久av网站 | 国产精品第四页 | 久久久无码一区二区三区 | 91精品看片| 国内自拍小视频 | 97超级碰碰人妻中文字幕 | 九九热九九爱 | 天天干,天天操 | 中日韩精品在线 | 男人天堂你懂的 | 在线不卡日韩 | 日本性高潮视频 | 亚洲自拍偷拍一区 | 99视频观看| 亚洲欧美综合一区二区 | 岛国av噜噜噜久久久狠狠av | 欧美日韩一二三四 | 成人欧美一区二区三区小说 | 亚洲啊v| 久久国产精品无码网站 | 伊人久久久久久久久久 | 国产999在线观看 | caopor在线视频 | 欧美精品大片 | 日日爽夜夜操 | 欧美激情欧美激情在线五月 | 摸摸大奶子 | 在线免费观看av的网站 | 美国黄色片网站 | 狠狠躁夜夜躁人人爽天天高潮 | 国产精品久久久午夜夜伦鲁鲁 | 国产一级久久久久毛片精品 | 日本在线色 | 亚洲91av| 人妻激情偷乱频一区二区三区 | 欧美精品色图 | 日韩少妇裸体做爰视频 | 亚洲人成亚洲人成在线观看 |