蓝桥杯倒数七天冲刺国一之每日复习第五天

大家好,我是泡泡,今天给大家带来复习的内容,因为复习,所以一带而过啦

目录

一丶平方序列

二丶穿越雷区


一丶平方序列

题目链接:平方序列 - 蓝桥云课 (lanqiao.cn)

题目要求:

小明想找到两个正整数 XX 和 YY,满足

  1. 2019<X<Y;
  2. 2019^2, X^2, Y^2 组成等差数列。

请你求出在所有可能的解中,X + YX+Y 的最小值是多少?

解题思路:

暴力

#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;
        }
    }
}

二丶穿越雷区

题目链接:穿越雷区 - 蓝桥云课 (lanqiao.cn)

题目要求:

X 星的坦克战车很奇怪,它必须交替地穿越正能量辐射区和负能量辐射区才能保持正常运转,否则将报废。

某坦克需要从 A 区到 B 区去( A,B 区本身是安全区,没有正能量或负能量特征),怎样走才能路径最短?

已知的地图是一个方阵,上面用字母标出了 A,B 区,其它区都标了正号或负号分别表示正负能量辐射区。

例如:

A + - + -

- + - - +

- + + + -

+ - + - +

B + - + -

坦克车只能水平或垂直方向上移动到相邻的区。

解题思路:

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;
}

猜你喜欢

转载自blog.csdn.net/qq_45400861/article/details/123989068