zoukankan      html  css  js  c++  java
  • 超级英雄Hero

    超级英雄Hero

    入门OJ传送门

    题目

    Description
    现在电视台有一种节目叫做超级英雄,大概的流程就是每位选手到台上回答主持人的几个问题,然后根据回答问题的多少获得不同数目的奖品或奖金。主持人问题准备了若干道题目,只有当选手正确回答一道题后,才能进入下一题,否则就被淘汰。为了增加节目的趣味性并适当降低难度,主持人总提供给选手几个“锦囊妙计”,比如求助现场观众,或者去掉若干个错误答案(选择题)等等。
    这里,我们把规则稍微改变一下。假设主持人总共有m道题,选手有n种不同的“锦囊妙计”。主持人规定,每道题都可以从两种“锦囊妙计”中选择一种,而每种“锦囊妙计”只能用一次。我们又假设一道题使用了它允许的锦囊妙计后,就一定能正确回答,顺利进入下一题。现在我来到了节目现场,可是我实在是太笨了,以至于一道题也不会做,每道题只好借助使用“锦囊妙计”来通过。如果我事先就知道了每道题能够使用哪两种“锦囊妙计”,那么你能告诉我怎样选择才能通过最多的题数吗?
    Input
    一行是两个正整数n和m(0 < n <1001,0 < m < 1001)表示总共有n中“锦囊妙计”,编号为0~n-1,总共有m个问题。
    以下的m行,每行两个数,分别表示第m个问题可以使用的“锦囊妙计”的编号。
    注意,每种编号的“锦囊妙计”只能使用一次,同一个问题的两个“锦囊妙计”可能一样。
    Output
    第一行为最多能通过的题数p
    Sample Input
    5 6
    3 2
    2 0
    0 3
    0 4
    3 2
    3 2
    Sample Output
    4

    题意

    看题目还是挺简单的,也A了
    有M组数据,每组数据的两个数代表两种选择
    也就是在0~n-1的数中,每组数据要么做第一种选择,要么做第二种选择
    0~n-1的数中选过的数不能选第二次

    思路

    概况

    大概就是用一个两层的二维数组存图,然后做DFS搜索
    (见图1)

    坐标

    我们可以发现坐标变化可以分为在第一行的两种和第二行的两种(红色和绿色箭头),但我们可以通过越界判断给第一行和第二行都统一为三种变化(x+1,y-1),(x+1,y+0)(x+1,y+1)(蓝色箭头)
    (见图2)

    标记

    这里用v[N]来标记0~n-1的数是否选过,使选过的数不选第二次

    在这里插入图片描述

    代码

    //超级英雄Hero
    #include<bits/stdc++.h>
    using namespace std;
    int n,m;
    int a[1010][5];
    int dir[3][2]={{1,-1},{1,0},{1,1}};
    int ans,mx;
    int v[1010];
    
    void DFS(int x,int y){
    	
    	//cout<<"坐标"<<x<<" "<<y<<endl;
    	
    	v[a[x][y]]=1;
    	ans++;
    	//cout<<"ans:"<<ans<<endl;
    	
    	for(int i=0;i<=2;i++){
    		int tx=dir[i][0]+x;
    		int ty=dir[i][1]+y;
    		if(tx>=1&&tx<=m&&ty>=1&&ty<=2&& v[ a[tx][ty] ] != 1 ){
    			DFS(tx,ty);	
    		}else{
    			mx=max(mx,ans);
    			//cout<<mx<<"mx--ans"<<ans<<endl;
    		}
    		
    		
    	}
    	ans=0;
    	
    }
    
    int main(){
    	cin>>n>>m;
    	for(int i=1;i<=m;i++){
    		cin>>a[i][1]>>a[i][2];
    	}
    	DFS(1,1);
    	for(int i=0;i<=n;i++){
    		v[i]=0;
    	}
    	ans=0;
    	DFS(2,1);
    	cout<<mx;
    	
    	return 0;
    }
    
  • 相关阅读:
    68
    56
    Django manager 命令笔记
    Django 执行 manage 命令方式
    Django 连接 Mysql (8.0.16) 失败
    Python django 安装 mysqlclient 失败
    H.264 SODB RBSP EBSP的区别
    FFmpeg—— Bitstream Filters 作用
    MySQL 远程连接问题 (Windows Server)
    MySQL 笔记
  • 原文地址:https://www.cnblogs.com/pqh-/p/13113929.html
Copyright © 2011-2022 走看看