首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

ZOJ Monthly Jan 2015: B、E、G、H 題解匯總

     編輯:關於C++

B: Card Game - 康托展開計數

已知手牌,求字典序排名。DFS 構造排名,剪枝:當前位選擇比目標小 → 直接用組合數計算剩餘排列數;相等 → 遞歸;大於 → 不合法。預計算組合數 C[n][k]。

E: Easy Task - 模擬檢測循環

同 ZOJ 3844,直接模擬替換最大最小值為差值,記錄狀態(排序數組哈希),重狀態輸出無解,全等輸出值。無無解情況?實際測試有循環。

G: GCD Operations - 構造解

所有數 GCD 若不為 1 → -1。為 1 則:拿第一個數與其餘各做一次 gcd,第一個變 1;再拿第一個與其餘各做一次,全部變 1。共 2n-2 步。輸出操作序列。

H: String Match - AC 自動機 + 狀態 DP / 最短路

已有字符串構建字典樹。狀態 dp[x][y][node] 表示在位置 (x,y) 且字典樹節點為 node 的最小步數。Dijkstra/BFS 展開,遇字典樹終結點更新答案。字符格只能走非 '#' 格,字母格觸發字典樹轉移。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved