Cuenta regresiva de Blue Bridge Cup para el quinto día de revisión diaria

Hola a todos soy Bubble, hoy les traigo el contenido de la reseña, por la reseña la paso de largo.

contenido

1. Secuencia cuadrada

2. Cruzando el campo minado


1. Secuencia cuadrada

Enlace temático: Secuencia cuadrada - Curso de nubes de Lanqiao (lanqiao.cn)

Requisitos del tema:

Xiao Ming quiere encontrar dos números enteros positivos XX e YY, satisfactorio

  1. 2019<X<Y;
  2. 2019^2, X^2, Y^2 forman una secuencia aritmética.

¿Cuál es el valor mínimo de X + YX + Y entre todas las soluciones posibles?

Ideas para resolver problemas:

Violencia

#include<bits/stdc++.h>
using namespace std;
int main()
{
    for(int i=2020;i<10001;i++)
    {
        int x = i*i*2-2019*2019;
        int y = sqrt(x);
        if(y*y==x)
        {
            cout<<i+y;
            return 0;
        }
    }
}

2. Cruzando el campo minado

Enlace temático: Cruzando el campo minado - Curso de nubes de Lanqiao (lanqiao.cn)

Requisitos del tema:

El tanque del tanque de X-star es muy extraño, debe pasar alternativamente a través del área de radiación de energía positiva y el área de radiación de energía negativa para mantener el funcionamiento normal, de lo contrario, será desechado.

Un tanque necesita ir del área A al área B (las áreas A y B son áreas seguras, sin características de energía positiva o negativa), ¿cómo obtener el camino más corto?

El mapa conocido es una matriz cuadrada, en la que las áreas A y B están marcadas con letras, y las otras áreas están marcadas con signos positivos o negativos para indicar las áreas de radiación de energía positiva y negativa, respectivamente.

P.ej:

A + - + -

- + - - +

- + + + -

+ - + - +

B + - + -

Los tanques solo pueden moverse horizontal o verticalmente a zonas adyacentes.

Ideas para resolver problemas:

plantilla BFS

#include<bits/stdc++.h>
using namespace std;
const int N = 101;
char s[N][N];
int dx,dy,tx,ty,n;
int ddx[]={1,0,0,-1};
int ddy[]={0,1,-1,0};
int vis[N][N];
struct node{
	int x,y,t;
	char b;
};
int bfs()
{
	vis[dx][dy] = 1;
	queue<node>q;
	q.push({dx,dy,0,'r'});
	while(q.size())
	{
		node z = q.front();
		q.pop();
		if(z.x==tx&&z.y==ty)
		{
			return z.t;
		}
		for(int i=0;i<4;i++)
		{
			int x = z.x+ddx[i];
			int y = z.y+ddy[i];
			if(!vis[x][y]&&x>0&&y>0&&x<=n&&y<=n&&s[x][y]!=z.b)
			{
				q.push({x,y,z.t+1,s[x][y]});
				vis[x][y] = 1;
			}
		}
	}
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			cin>>s[i][j];
			if(s[i][j]=='A')
			{
				dx=i;
				dy=j;
			}
			if(s[i][j]=='B')
			{
				tx=i;
				ty=j;
			}
		}
	}
	cout<<bfs();
	return 0;
}

Supongo que te gusta

Origin blog.csdn.net/qq_45400861/article/details/123989068
Recomendado
Clasificación