問題描述
n個人參加某項特殊考試。
為了公平,要求任何兩個認識的人不能分在同乙個考場。
求是少需要分幾個考場才能滿足條件。
輸入格式
第一行,乙個整數n(1輸出格式
一行乙個整數,表示最少分幾個考場。
樣例輸入5
8 1 2
1 3
1 4
2 3
2 4
2 5
3 4
4 5樣例輸出
4樣例輸入5
10 1 2
1 3
1 4
1 5
2 3
2 4
2 5
3 4
3 5
4 5樣例輸出
5思路:一開始看以為是個並查集的題,高高興興打出來了,樣例過不去,後來發現裡面沒有說關係具有傳遞性,果然沒這麼容易,其實這道題用深搜,設乙個二維陣列表示第i個考場的第j個學生的編號,因為資料較小,就直接開二維陣列不用vector了,還要設定乙個陣列表示第i個考場有幾個學生,然後直接暴力深搜+回溯。
**:#include
using namespace std;
const int maxn = 150;
bool vis[maxn][maxn];
int stu[maxn][maxn];
int num[maxn];
int n, m, ans;
void init()
void dfs(int id, int room)
if(id > n)
for(int i = 1;i <= room;i++)
if(cnt == num[i])
}stu[room + 1][++num[room + 1]] = id;
dfs(id + 1,room + 1);
--num[room + 1];
}int main()
dfs(1, 0);
cout << ans << endl;
}return 0;
}
藍橋杯 歷屆試題 分考場
問題描述 n個人參加某項特殊考試。為了公平,要求任何兩個認識的人不能分在同乙個考場。求是少需要分幾個考場才能滿足條件。輸入格式 第一行,乙個整數n 1輸出格式 一行乙個整數,表示最少分幾個考場。樣例輸入58 1 21 3 1 42 3 2 42 5 3 44 5 樣例輸出 樣例輸入510 1 21 ...
藍橋杯 歷屆試題 分考場
問題描述 n個人參加某項特殊考試。為了公平,要求任何兩個認識的人不能分在同乙個考場。求是少需要分幾個考場才能滿足條件。輸入格式 第一行,乙個整數n 1思路 我的一開始的思路是貪心,保證目前是最優的,但是內心一直覺得很不合理所以就沒有去實現這個 後來我終於明白不對在哪了,貪心只能保證區域性最優,全域性...
藍橋杯 歷屆試題 分考場 DFS
時間限制 1.0s 記憶體限制 256.0mb n個人參加某項特殊考試。為了公平,要求任何兩個認識的人不能分在同乙個考場。求是少需要分幾個考場才能滿足條件。第一行,乙個整數n 1一行乙個整數,表示最少分幾個考場。5 81 2 1 31 4 2 32 4 2 53 4 4 55 101 2 1 31 ...