zoukankan      html  css  js  c++  java
  • 蓝桥 历届试题 分考场

    记录一下错误点:一开始用了贪心,其实在想贪心的时候就应该发现有些地方解释不了,如果用贪心的话,那肯定是逐个枚举点,分别在前num个房间去试,如果在某个房间没有认识的人,就把当前这个人放到那个房间里去,如果遍历所有已有的房间都存在认识的,那就新开一个房间。关键是这样想对吗?为什么某个房间里没有认识的人就一定要放到那个房间里?那尽管有某个房间不存在认识的人,那我新开一个房间放当前这个人答案会不会更优?我们不知道,那怎么办,暴力去试,记得剪枝

    附一个贪心不成立的情况 :1-3 2-4 3-4

    贪心:ans = 3 dfs :ans = 2

    #include <iostream>
    #include <cstdio>
    #include <vector>
    #include <algorithm>
    using namespace std;
    int n,m,num = 1,ans;
    bool edge[105][105];
    vector<int> room[101];
    void dfs(int id,int num)
    {
    	if(num >= ans) return; //剪枝
    	if(id == n+1){
    		ans = num;
    		return;
    	}
    	for(int fj = 1; fj <= num; fj++){
    		bool isfit = true;
    		for(int k = 0; k < room[fj].size(); k++){
    			int cnt = room[fj][k];
    			if(edge[cnt][id]){
    				isfit = false;
    				break;
    			}
    		}
    		if(isfit){
    			room[fj].push_back(id);
    			dfs(id+1,num);
    			room[fj].pop_back();
    		}
    	}
    	room[++num].push_back(id);
    	dfs(id+1,num);
    	room[num].pop_back();
    }
    int main()
    {
    	cin>>n>>m;
    	ans = n;
    	for(int i = 1; i <= m; i++){
    		int x,y;
    		cin>>x>>y;
    		edge[x][y] = edge[y][x] = true;
    	}
    	dfs(1,0);
    	cout<<ans;
    	return 0;
    }
    
    
    "没有天赋异禀,那就加倍努力"
  • 相关阅读:
    jquery 页面滚动到底部事件
    01上古天真论 [音频]
    pyjnius 通过包名获取其他应用程序的名称
    python3 获取当前网络子网ip
    堆排序、快速排序、归并排序总结
    Linux 进程
    链表(转载)
    15-C语言结构体(转载)
    IP地址的分类
    TCP/IP详解
  • 原文地址:https://www.cnblogs.com/Beic233/p/13169003.html
Copyright © 2011-2022 走看看