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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

战略游戏 树形DP

發布時間:2024/10/12 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 战略游戏 树形DP 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題意/Description

  Bob喜歡玩電腦游戲,特別是戰略游戲。但是他經常無法找到快速玩過游戲的辦法。現在他有個問題。他要建立一個古城堡,城堡中的路形成一棵樹。他要在這棵樹的結點上放置最少數目的士兵,使得這些士兵能了望到所有的路。注意,某個士兵在一個結點上時,與該結點相連的所有邊將都可以被了望到。?

  請你編一程序,給定一樹,幫Bob計算出他需要放置最少的士兵。

?

讀入/Input

  ? ?輸入文件中數據表示一棵樹,描述如下:?
  第一行 N,表示樹中結點的數目。?
  第二行至第N+1行,每行描述每個結點信息,依次為:該結點標號i,k(后面有k條邊與結點I相連),接下來k個數,分別是每條邊的另一個結點標號r1,r2,...,rk。?
  對于一個n(0 < n <= 1500)個結點的樹,結點標號在0到n-1之間,在輸入文件中每條邊只出現一次。?

?

輸出/Output

  ? ?輸出文件僅包含一個數,為所求的最少的士兵數目。?
  例如,對于如右圖所示的樹:?
  答案為1(只要一個士兵在結點1上)。?

?

題解/solution

  ? 這題顯然是一道樹型DP,不但要考慮子節點對他的根節點的影響,而且每放一個士兵,士兵所在位置既影響他的子節點也影響了他的根節點,狀態不難表現出來。

? ? ? 我在做的時候,WA了幾次。主要是n是從0開始的,大家在循環是要注意一下,否則會忽略‘0’這個結點。

?

代碼/Code

?

<strong>varn:longint;g:array [0..1501,0..1501] of boolean;v,f:array [0..1501] of boolean; function hh(x:longint):boolean; vari:longint; beginfor i:=0 to n-1 doif (x<>i) and (g[x,i]) then exit(false);exit(true); end;function tree(t:longint):longint; vari,j,k,l:longint; beginj:=0; k:=0; l:=0;for i:=0 to n-1 doif (i<>t) and (g[t,i]) thenif hh(i) then inc(j) elsebeginl:=l+tree(i);if not v[i] then inc(k);end;if (j>0) or (k>0) thenbeginv[t]:=true;exit(l+1);end else exit(l); end;procedure main; vari,j,k,l,r,ri:longint; beginread(n);for j:=0 to n-1 dobeginread(k,l);for r:=1 to l dobeginread(ri);g[k,ri]:=true;f[ri]:=true;end;end;for j:=0 to n-1 doif (f[j]=false) then break;if hh(j) then write('1')else write(tree(j)); end;beginmain; end. </strong>



?

轉載于:https://www.cnblogs.com/zyx-crying/p/9319711.html

總結

以上是生活随笔為你收集整理的战略游戏 树形DP的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。