hdu 1498 匈牙利演算法

2021-06-17 18:24:04 字數 1178 閱讀 4830

這道題目昨天晚上做了很久,題目意思沒看懂,後來看了些網上**,算是徹底懂了。其實是每個學生可以選擇其中一種氣球來踩,後面還有很多學生在排隊。就是有多少種顏色的氣球就有多少個學生來踩,當每種顏色的氣球都被踩過k次以後,問:還有哪幾種顏色的氣球存在。

剛開始做了一遍,發現重複輸出了好多。後來看見別人用了set容器,自己也跟著用了,提交46ms,本以為很優來了,搜下神牛的**,發現了乙個15ms的,汗。

其實人家演算法和我是一樣的,只不過人家用兩個陣列記錄   等於   我的set容器。以後要少用set容器之類的系統模板,因為這樣或多或少影響了我的程式設計能力與**的靈敏性。。。

下面是我的**46ms:

#include#include#include#include#includeusing namespace std;

#define maxn 105

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

int map[maxn][maxn];

bool vis[maxn];

int flag[maxn][maxn];

int per[maxn];

int ans[maxn];

int n,k;

bool find(int x)}}

return false;

}int hungry()

return sum;

}int main()

}if( k >= n ) printf("-1\n");

else

int sum = hungry();

if(sum > k) ans[anss++] = color;

}if(anss==0) printf("-1\n");

else

int dfs(int i,int k)

} }

return 0;

} int main()

} }

tt=0;

for(i=0;ik)

a[tt++]=color[i];

} if(tt==0)

printf("-1\n");

else

{ qsort(a,tt,sizeof(a[0]),cmp);

for(i=0;i

其實還有好多0ms的神牛。。。。。。。

HDU1498 二分匹配 最大頂點覆蓋

題意 給定一張圖,圖中的每個數代表一種顏色的氣球 求 哪種顏色的氣球不能在k次中被消滅 每次只能消滅一行或者一列 二分匹配 按照題意來分析 就是要尋找一種消滅方法 使得所有同種氣球被消滅 這就符合了最小點覆蓋的意義 當所有的點 在這裡也就是氣球的行號和列號 被覆蓋,也就是所有的行號和列號被覆蓋 最小...

匈牙利演算法之hdu1150

題目大意 有ab兩種機器,分別有很多種工作狀態.如果從一種狀態換到另外一種狀態的話.需要重啟機器.現在給乙個關係.表示任務i可以用a中的乙個機器或者是b中的乙個機器來完成.求最小的重啟次數.完成所有任務.題目連線 思路 由於每個任務都可以用a或b機器的某種工作狀態來完成,因此,對於每個任務,可以把a...

hdu 2063 過山車(匈牙利演算法)

典型的匈牙利演算法入門題 匈牙利演算法不明白的話推薦看這篇部落格,博主寫的很棒,看了完全可以明白。problem description rpg girls今天和大家一起去遊樂場玩,終於可以坐上夢寐以求的過山車了。可是,過山車的每一排只有兩個座位,而且還有條不成文的規矩,就是每個女生必須找個個男生做...