HDU OJ一些題目 | MaskRay



HDU OJ一些題目 | MaskRay

給出一棵節點帶權的樹,節點上可以有陷阱,找一條最多經過C個陷阱的簡單路徑,使得經過的節點權值和最大。另外,一旦訪問到了第C個陷阱,就得立刻停下,路徑不能繼續延伸了。

dp[i][j][k]:以i爲一個端點,另一端在i的子樹內的路徑經過節點權值和的最大值,約束條件有兩個:

  • 經過了j個陷阱
  • 端點特性爲kk有兩種取值:
  • 0:表示子樹內的端點必須是陷阱
  • 1:表示子樹內的端點可以任取,沒有k爲0時的限制

之所以引入k是爲了解決題目中要求的一點:當經過第C次陷阱時,必須立刻停下,不能繼續前進。考察從起點到終點沿路節點是否有陷阱,有以下四種情況:

  • o-...-o:起點、終點皆無陷阱
  • x-...-o:起點無陷阱,終點有陷阱
  • o-...-x:起點無陷阱,終點有陷阱
  • x-...-x:起點、終點皆有陷阱

如果選擇的路徑上恰好有C的陷阱,那麼前兩種情況就是不合法的。因爲一旦經過第C次陷阱就得立刻停下,之後不可能再經過無陷阱的節點。

如果選擇的路徑上有不到C個陷阱,那麼前兩種情況也可以算上。

狀態中的k就是用來區分不合法狀況的,當k爲0時只允許後兩種情況;爲時允許所有四種情況。動態規劃過程計算完畢之後,還要注意最優路徑可能跨立兩棵子樹,我們需要枚舉兩棵子樹的路徑,把它們接合。如果這兩條路徑的陷阱總數不到C,那麼就對端點特性沒有要求(四種情況均可),對應了代碼中的if (j+k < c) ans = max(ans, dp[u][j][1] + dp[v][k][1]);;如果總數等於C`,那麼路徑的一端必須是陷阱。


Read full article from HDU OJ一些題目 | MaskRay


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts