[蓝桥杯2017决赛]分考场、OpenJudge:分成互质数
分考場(chǎng)傳送門
分成互質(zhì)數(shù)傳送門
題目描述
n個(gè)人參加某項(xiàng)特殊考試。
為了公平,要求任何兩個(gè)認(rèn)識(shí)的人不能分在同一個(gè)考場(chǎng)。
求最少需要分幾個(gè)考場(chǎng)才能滿足條件。
輸入
第一行,一個(gè)整數(shù)n(1<n<100),表示參加考試的人數(shù)。
第二行,一個(gè)整數(shù)m,表示接下來有m行數(shù)據(jù)
以下m行每行的格式為:兩個(gè)整數(shù)a,b,用空格分開 (1<=a,b<=n) 表示第a個(gè)人與第b個(gè)人認(rèn)識(shí)(編號(hào)從1開始)。
輸出
一行一個(gè)整數(shù),表示最少分幾個(gè)考場(chǎng)。
樣例輸入
5
8
1 2
1 3
1 4
2 3
2 4
2 5
3 4
4 5
樣例輸出
4
大意就是要讓互相認(rèn)識(shí)的人不要在同一個(gè)考場(chǎng),然后求最小考場(chǎng)數(shù),這里可以用涂色法來確認(rèn)兩人在不在同意考場(chǎng),具體代碼如下。
#include<iostream> #include<csttring> #include<algorithm> const int N=110; int a[N][N],rl[N],rp[N][N],n,ans=N;//a數(shù)組是涂色數(shù)組,rl,roomlenth.是房間的當(dāng)前人數(shù),rp,roompeople.是當(dāng)前房間的人。 using namespace std; bool judge(int pos,int room) {for(int i=1;i<=rl[room];i++)//當(dāng)前房子有沒有認(rèn)識(shí)的人,if(a[pos][rp[room][i]])//互相涂色的表示認(rèn)識(shí),返回false。return false;return true;//前面沒有找到互相認(rèn)識(shí)的人,然會(huì)true。 } void dfs(int pos,int total) {//pos是當(dāng)前尋找的人,total是當(dāng)前答案。if(total>=ans) return ;//當(dāng)前答案大于最優(yōu)解剪枝。if(pos==n+1) { ans=min(ans,total); return ; }//最優(yōu)答案。for(int i=1;i<=total;i++) {//遍歷之前已近放置的房子,看看有沒有符合要求的,if(judge(pos,i)) {/第pos個(gè)人在第i個(gè)房子是否合理,rp[i][++rl[i]]=pos;dfs(pos+1,total);rl[i]--;//回溯。}}rp[total+1][++rl[total+1]]=pos;//前面的房子全部不滿住。重新開一個(gè)房子。dfs(pos+1,total+1);rl[total+1]--;回溯。 } int main() {int x,y,m;cin>>n>>m;for(int i=0;i<m;i++) {//讀入加涂色。cin>>x>>y;a[x][y]=1;a[y][x]=1;}dfs(1,0);從第一個(gè)人開始搜索,cout<<ans<<endl;return 0; }7834:分成互質(zhì)組
總時(shí)間限制: 1000ms 內(nèi)存限制: 65536kB
描述
給定n個(gè)正整數(shù),將它們分組,使得每組中任意兩個(gè)數(shù)互質(zhì)。至少要分成多少個(gè)組?
輸入
第一行是一個(gè)正整數(shù)n。1 <= n <= 10。
第二行是n個(gè)不大于10000的正整數(shù)。
輸出
一個(gè)正整數(shù),即最少需要的組數(shù)。
樣例輸入
6
14 20 33 117 143 175
樣例輸出
3
其實(shí)這兩道題目都是差不都的方法,上面的分考場(chǎng)是判斷認(rèn)識(shí)不認(rèn)識(shí),這里的是判斷他們兩個(gè)的最大公因數(shù)是不是 1 ,做法都大致相同,只要把上面的判斷數(shù)組改成gcd函數(shù)就行,直接給出代碼吧。
總結(jié)
以上是生活随笔為你收集整理的[蓝桥杯2017决赛]分考场、OpenJudge:分成互质数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 柏叶的功效与作用、禁忌和食用方法
- 下一篇: 蒸萸肉的功效与作用、禁忌和食用方法