蓝桥杯真题31日冲刺国一 | 每日题解报告 第十六天

简介: 大家好,我是泡泡,今天的题目很合理,很多模板,大家多多掌握,学习一下用各种思路解题,灵活多变!

一、金币(模拟)


题目链接:金币 - 蓝桥云课 (lanqiao.cn)


题目要求:


国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币......;这种工资发放模式会一直这样延续下去:当连续 N 天每天收到 N 枚金币后,骑士会在之后的连续 N+1 天里,每天收到 N+1 枚金币。


请计算在前 K 天里,骑士一共获得了多少金币。


解题思路:


定义一个金币数量 一个总和 每过完一个阶段金币上限+1 如果天数过了就跳出循环。


#include<bits/stdc++.h>
using namespace std;
int main()
{
  int n;
  cin>>n;
  int m = 1;
  int sum = 0;
  for(int j=1;j<=n;)
  {
  for(int i=1;i<=m;i++)
  {
    sum += m;
    j++;
    if(j>n)
    {
    break;
    }
  }
  m++;
  }
  cout<<sum;
  return 0;
}


二、优秀的拆分(位运算)


题目链接:


题目要求:


一般来说,一个正整数可以拆分成若干个正整数的和。


例如,1=1,10=1+2+3+4 等。对于正整数 n 的一种特定拆分,我们称它为“优秀的”,当且仅当在这种拆分下,nn 被分解为了若干个不同的 2 的正整数次幂。注意,一个数 x 能被表示成 2 的正整数次幂,当且仅当 xx 能通过正整数个 2 相乘在一起得到。


例如,10=8+2=2^3+2^1是一个优秀的拆分。但是,7=4+2+1=2^2+2^1+2^0 就不是一个优秀的拆分,因为 1 不是 2 的正整数次幂。


现在,给定正整数 n,你需要判断这个数的所有拆分中,是否存在优秀的拆分。若存在,请你给出具体的拆分方案。


解题思路:


位运算 如果这个数字该位数为1 那么就输出该位


#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin >> n;
    if(n%2)
    {
      cout<<"-1";
      return 0;
  }
    for(int i=25;i>=0;i--)
    {
      if(n>>i&1)
      {
      printf("%d ",1<<i);
  }
  }
    return 0;
}


三、穿越雷区(bfs)


题目链接:“蓝桥杯”练习系统 (lanqiao.cn)


题目要求:


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


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


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


例如:


A + - + -

- + - - +

- + + + -

+ - + - +

B + - + -


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


解题思路:


一个bfs模板,bfs就行。


#include<bits/stdc++.h> 
using namespace std;
int dx[]={-1,1,0,0};
int dy[]={0,0,-1,1};
char ch[110][110];
int n,bx,by,ex,ey;
struct node{
    int x,y,step;
    char cc;
};
bool vis[110][110];
bool check(int x,int y,char c)//判断是否越界 
{
    if(!vis[x][y]&&x>0&&y>0&&x<=n&&y<=n&&ch[x][y]!=c)//没有搜过 坐标不越界  
    {
        return 1;
    }
    return 0;
}
int bfs()
{
    queueq;//队列 
    q.push(node{bx,by,0,'r'});//bx by 0 r进队 
    vis[bx][by]=1;//标记这个地方被搜过了 
    while(q.size())//队列不空 
    {
        node now;//结构体变量 
        now=q.front();//now等于队列首值 
        q.pop();//弹出 
        if(now.x==ex&&now.y==ey)//如果现在的坐标和终点一样 
        {
            return now.step;//返回路径 
        }
        for(int i=0;i<4;i++)//四个方向 
        {
            int x=now.x+dx[i];
            int y=now.y+dy[i];
            if(check(x,y,now.cc))//不越界 
            {
                q.push(node{x,y,now.step+1,ch[x][y]});//压入 
                vis[x][y]=1;
            }
        }
    }
    return -1;
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            cin>>ch[i][j];//读入 
            if(ch[i][j]=='A')//定位起点 
            {
                bx=i;
                by=j;
            }
            if(ch[i][j]=='B')//定位终点 
            {
                ex=i;
                ey=j;
            }
        }
    }
    cout<<bfs();
    return 0;
}


四、 蓝肽子序列(动态规划)


题目链接:“蓝桥杯”练习系统 (lanqiao.cn)


题目要求:


29.png


解题思路:


最长公共子序列 直接dp。


这个题不太会,等学了补上。

目录
相关文章
|
10月前
|
测试技术
【蓝桥杯冲刺】蓝桥杯13届省赛C++b组真题-A~E题
【蓝桥杯冲刺】蓝桥杯13届省赛C++b组真题-A~E题
117 0
|
10月前
|
存储
【蓝桥杯冲刺】蓝桥杯12届省赛C++b组真题-填空题
【蓝桥杯冲刺】蓝桥杯12届省赛C++b组真题-填空题
72 1
|
10月前
|
人工智能 测试技术 BI
【蓝桥杯冲刺】蓝桥杯11届省赛C++b组真题-编程题
【蓝桥杯冲刺】蓝桥杯11届省赛C++b组真题-编程题
78 0
|
10月前
【蓝桥杯冲刺】蓝桥杯11届省赛C++b组真题-填空题
【蓝桥杯冲刺】蓝桥杯11届省赛C++b组真题-填空题
100 0
|
10月前
【蓝桥杯冲刺】日期类专题特训
【蓝桥杯冲刺】日期类专题特训
33 0
|
10月前
|
人工智能 测试技术
【蓝桥杯冲刺】蓝桥杯12届省赛C++b组真题-编程题
【蓝桥杯冲刺】蓝桥杯12届省赛C++b组真题-编程题
68 0
|
11月前
|
机器学习/深度学习 存储 测试技术
蓝桥杯冲刺-倒数第八天-省赛题
蓝桥杯冲刺-倒数第八天-省赛题
94 0
|
机器学习/深度学习 Python
【蓝桥杯真题】16天冲刺 Python
【蓝桥杯真题】16天冲刺 Python
186 0
【蓝桥杯真题】16天冲刺 Python
|
算法 Python 容器
【蓝桥杯真题】18天Python组冲刺 心得总结
【蓝桥杯真题】18天Python组冲刺 心得总结
134 0
【蓝桥杯真题】18天Python组冲刺 心得总结
蓝桥杯倒数七天冲刺国一之每日复习第六天
大家好,我是泡泡,今天是复习第六天!今天有事,稍微水一下
79 0