zoukankan      html  css  js  c++  java
  • 洛谷 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欢乐赛一样,暴力可以拿很多分了

  • 相关阅读:
    python 关于文件操作
    python2 编码与解码
    Git系列(二) 冲突解决
    异步回调机制分析
    CSS盒子模型理解
    Git多人协同开发模型
    CSS连载控制背景与CSS精灵
    函数调用在回调,委托与事件在程序设计中的应用
    TFS与Git结合进行代码管理
    Git系列之(二)Git协议与工作协同
  • 原文地址:https://www.cnblogs.com/bzzs/p/13068435.html
Copyright © 2011-2022 走看看