試題 歷屆試題 分考場

2021-10-04 14:22:41 字數 1042 閱讀 9116

看的n不大,就100,我們想到直接暴力做,當然,最好還是剪枝一下,我這裡用了順序列舉,排序剪枝,中間判斷一下當前的考場數量比當前的ans是否大,如果大於等於了,就不用列舉,所以就兩次剪枝,我就過了

#include

#include

#include

#include

using

namespace std;

int n,ans=

0x3f3f3f3f

;vector<

int> v[

110]

;int idx;

//v存下每個考場的人,idx表示現在有幾個考場

pair<

int,

int> a[

110]

;//a存下每乙個人對應的認識的人數

vector<

int> f[

110]

;//f存下每乙個人認識那些人

bool

cmp(pair<

int,

int> a,pair<

int,

int> b)

bool

check

(int u,

int k)

}return

true;}

void

dfs(

int u)

for(

int i=

0;iv[idx]

.push_back

(a[u]

.first)

; idx++

;dfs

(u+1);

idx--

; v[idx]

.pop_back()

;}intmain()

sort

(a+1

,a+n+

1,cmp)

;//把認識的人多的排在前面,後來的分支就少一些

dfs(1)

; cout << ans;

}

試題 歷屆試題 分考場

問題描述 n個人參加某項特殊考試。為了公平,要求任何兩個認識的人不能分在同乙個考場。求是少需要分幾個考場才能滿足條件。輸入格式 第一行,乙個整數n 1思路分析 此題是乙個圖的可著色優化問題.注意回溯的問題 和 使用剪枝避免超時問題.實現 include using namespace std con...

試題 歷屆試題 分考場

問題描述 n個人參加某項特殊考試。為了公平,要求任何兩個認識的人不能分在同乙個考場。求是少需要分幾個考場才能滿足條件。輸入格式 第一行,乙個整數n 1 include include include include using namespace std int n,m,ans 9999 最小考場數...

歷屆試題 分考場

問題描述 n個人參加某項特殊考試。為了公平,要求任何兩個認識的人不能分在同乙個考場。求是少需要分幾個考場才能滿足條件。輸入格式 第一行,乙個整數n 1一開始以為是簡單的貪心問題,可不想一直正確率40 最後發現還是需要採用回溯,在剪枝下深度遍歷所有情況.include int pre 100 100 ...