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

HDU 5045:費用流求最大權匹配——題目與最小費用最大流建模

     編輯:關於C

題目大意

有n人、m題。每人做對每題的概率給定。需分配題目使總期望做對數最大。限制:前k題中,任兩人做題數差≤1(即前n題必須均勻分配)。求最大期望值。

建模思路:最小費用最大流

  • 將「期望做對數最大」轉化為「費用最小」:對每條邊取負概率作為cost,跑最小費用流,最終取負即得最大期望。
  • 均勻分配限制:前n題每人必做一題 → 可構建分層網絡,或對前n題單獨建圖保證完美匹配,其餘題接入同一流網絡。
  • 源點S連向每人節點,容量1費用0;人連向題,容量1費用=-prob;題連向匯點T,容量1費用0。
  • 對於前n題的均勻限制,可引入中間層或按輪次展開圖。

算法選擇:SPFA vs Dijkstra+劃分

  • SPFA:可直接處理負權邊,代碼簡單,適合負費用場景。
  • Dijkstra+劃分:需費用非負,需Johnson劃分轉換,實現較繁瑣。
  • 本題費用為負概率,推薦SPFA尋找最短增廣路。

代碼框架(關鍵結構)

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