這道題目昨天晚上做了很久,題目意思沒看懂,後來看了些網上**,算是徹底懂了。其實是每個學生可以選擇其中一種氣球來踩,後面還有很多學生在排隊。就是有多少種顏色的氣球就有多少個學生來踩,當每種顏色的氣球都被踩過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今天和大家一起去遊樂場玩,終於可以坐上夢寐以求的過山車了。可是,過山車的每一排只有兩個座位,而且還有條不成文的規矩,就是每個女生必須找個個男生做...