• 洛谷 P1692 【部落卫队】


    啊这道题其实暴力就行了,算是一道搜索入门题吧。


    搜索变量就应该是当前到哪一位了,然后进行枚举,当前的一位加或者不加,然后知道搜完为止。

    判断当前一位可不可以加的时候本来想用vector的,但是没调出来qwq(菜),然后学的第一篇题解惹

    上代码:

    #include <bits/stdc++.h>
    using namespace std;
    int n , m , ans;
    int anses[110] , now[110] , vis[110] , dis[110][110];
    void dfs(int step , int sum){	//当前到哪个人了和人数总和 
    	if(step == n + 1){
    		if(sum > ans){
    			ans = sum;
    			for(int i = 1; i <= n; i++) anses[i] = now[i];
    		}
    		return;
    	}
    	if(n + sum - step + 1 < ans) return;	//剪枝,若剩下的还没有答案多,放弃
    	int f = 0;
    	for(int i = 1; i <= step - 1; i++)
            if(vis[i] && dis[step][i]){	 
    			f = 1; 
    			break;
    		}
    	if(!f){
    		vis[step] = 1;
    		now[step] = 1;
    		dfs(step + 1 , sum + 1);
    		now[step] = 0;
    		vis[step] = 0;
    	}
    	dfs(step + 1 , sum);	//!!!!这里不能交换与上面加入这个人的位置,因为在答案一致的情况下字典序优先 
    }
    int main(){
    	cin >> n >> m;
    	for(int i = 1; i <= m; i++){
    		int x , y;
    		cin >> x >> y;
    		dis[x][y] = dis[y][x] = 1;
    	}
    	dfs(1 , 0);
    	cout << ans << endl;
    	for(int i = 1; i <= n; i++) cout << anses[i] << " ";
    	return 0;
    }
    

    吐槽:多刷点搜索暴力肯定有好处的,就像这次6.6欢乐赛一样,暴力可以拿很多分了

  • 相关阅读:
    路由器只要能连接上,就能得到密码,
    jmeter上传文件搞了一天,才搞定,没高人帮忙效率就是低,赶紧记下来,以备后用
    1关0不关
    AJAX学习
    建表原则
    设计模式——代理模式
    jdk动态代理机制
    ArrayList源码分析
    Java集合类:HashMap (基于JDK1.8)
    SpringMVC的数据转换、格式化和数据校验
  • 原文地址:https://www.cnblogs.com/bzzs/p/13068435.html
Copyright © 2020-2023  润新知