hdu1960 最小路徑覆蓋

2021-06-21 12:25:17 字數 2403 閱讀 8411

題意:

給你明天的計程車訂單,訂單中包含每個人的起點和終點座標,還有時間,如果一輛計程車想接乙個乘客必須在每個訂單前1分鐘到達,也就是小於等於time-1,問你完成所有訂單要最少多少量計程車...

思路:

典型的最小路徑覆蓋,對於最小路徑覆蓋,我們可以這麼理解,最次的情況是n輛,而只要找到那麼一組可以與其匹配,就是用一輛車的就從n裡減去一輛,我們找到最大的這種匹配數量,也就是最大匹配,然後n-ans ,就行了...這個題目有個地方挺坑的,就是給了個提示,說計程車可能跑到後半夜,一開始我sb了,當時間大於半夜凌晨就更新成第二天的時間,結果wa了,想想也是,更新完以前拉不了的活可能拉了,後來直接把更新的這個去掉就ac了,ac的時候感覺很奇怪,是不是資料弱? 我感覺可以不更新時間,而是把23.01 01.02 變成23.01 25.02,因為說了訂單是按時間順序給的,可是在仔細看看題目,說的是第二天的訂單,第二天是不是就不會出現第三天的任務? 如果會的話就會出現第四天的任務....****,不想了,就當他只有第二天的任務吧,所以無視那條提示就可以ac了.

#include#include#define n_node 500 + 50

#define n_edge 300000

typedef struct

star;

typedef struct

node;star e[n_edge];node node[n_node];

intlist[n_node] ,tot;

intmk_dfs[n_node] ,mk_gx[n_node];

voidadd(

inta,

intb)

intabss(

intx)

intmaxx(

intx,

inty)

boolok(node a,node b)

intxyl_dfs(

ints)

}return0;

}int

main

()memset(list,0,

sizeof

(list));tot=1;

for(i=1;i<=n;i++)

for(j=i+1;j<=n;j++)

intans=0;memset(mk_gx,255,

sizeof

(mk_gx));

for(i=1;i<=n;i++)

printf("%d\n",n-ans);

}return0;

}

最小路徑覆蓋問題(最小路徑覆蓋)

本題題目描述可以發現很明顯的最小路徑覆蓋問題,又因為最小路徑覆蓋 節點數 二分圖最大匹配數,所以本題可以用匈牙利演算法求出二分圖最大匹配數,也可以向第一題那樣用網路流模型求出最大匹配數。本題建模時不同在於,每個點要分成兩個點,乙個為起點,乙個為終點,再來求二分圖最大匹配。然後麻煩就在於本題也要輸出路...

HDU1151最小路徑覆蓋

dag圖 無迴路有向圖 的最小路徑覆蓋 用盡量少的不相交簡單路徑覆蓋有向無環圖 dag 的所有頂點,這就是dag圖的最小路徑覆蓋問題。最小路徑覆蓋數 節點數 最大匹配數 include include include using namespace std const int maxn 200 in...

最小路徑覆蓋

zoj 2521 led display 題意 七段數碼顯示器,乙個數碼上的7段燈可以選擇滅掉一些後重複使用這個數碼,但滅掉的段不能再亮了。比如 6 可以 滅掉左小角的一段變成 5 來使用。但自己不能重複使用,即最少滅一段才能再次使用。現在按次序給出 乙個要現實的數碼序列,求需要的最少的燈數,使得能...