線性規劃與網路流24 魔術球問題

2021-07-26 06:49:44 字數 1015 閱讀 6839

題目點這裡

最小路徑覆蓋問題

,這道題,一開始我花了100多ms,看了下排行榜,,發現個10多ms的。看了很久他的**,才明白怎麼回事。同時更加加深了我對匈牙利演算法的理解。

我從他的**中學到的是

(1) 若多加幾條邊,並不需要重新跑一邊匈牙利,只需要從沒匹配的點開始dfs就可以了,

(2)若因為多加了乙個點,從而多加了邊,只需要從這個點dfs一次就好了,,不需要重新跑匈牙利

果然,要多看別人**啊~

不過這題還有乙個神一般的貪心演算法,大概是

第乙個球球當然是放在第乙個柱子裡面了

以後每乙個球都從第乙個柱子開始判斷是否能放進去,如果可以的話就放啦,如果不行就新開乙個啦。。不能再開就完啦。

然而,,我沒有證明出來這個為什麼正確,,有誰知道的,,求留個言啊

#include#include#include#include#include#include#include#include#include#define mx 3333

#define m 1555

#define inf 0x3f3f3f3f

#define mem(x,y) memset(x,y,sizeof(x))

#define fin freopen("input.txt","r",stdin)

using namespace std;

int nx,ny,n;

int head[mx],rear;

struct edge

edge[22*mx];

void edge_init()

void edge_add(int a,int b)

bool vis[mx];

int matchxy[mx],matchyx[mx];

bool hungarian_dfs(int u)

}return 0;

}bool vvis[3333]= ;

void init()

int main()

for(int i=0; i

線性規劃與網路流24題 04魔術球問題

1739 魔術球問題 time limit 1000ms memory limit 65536k total submit 39accepted 20 page view 230 special judged submit status discuss font size aa aa aa 假設有n...

線性規劃與網路流24題 4 魔術球

線性規劃與網路流24題 4 魔術球 description 假設有n根柱子,現要按下述規則在這n根柱子中依次放入編號為 1,2,3,的球。1 每次只能在某根柱子的最上面放球。2 在同一根柱子中,任何2個相鄰球的編號之和為完全平方數。試設計乙個演算法,計算出在n根柱子上最多能放多少個球。例如,在4 根...

網路流24題 魔術球問題

列舉答案轉化為判定性問題,然後最小路徑覆蓋,可以轉化成二分圖最大匹配,從而用最大流解決。列舉答案a,在圖中建立節點1.a。如果對於i具體方法可以順序列舉a的值,當最小路徑覆蓋數剛好大於n時終止,a 1就是最優解。由於是順序放球,每根柱子上的球滿足這樣的特徵,即下面的球編號小於上面球的編號。抽象成圖論...