前言

酒可真是好东西啊,能让人一时间忘记不快的事。
但是一到明天就算不喜欢也还是会想起,而且比昨天更让人痛苦,想逃也逃不掉。 ——坂田银时

题目来源

蓝桥杯官网→学习资料→历届真题→竞赛→蓝桥杯真题

A.美丽的2

没什么好说的,暴力就完事了。

#include<bits/stdc++.h>
using namespace std;
int main()
{int cnt=0;for(int i=1;i<=2020;i++){int x=i;while(x){int m=x%10;if(m==2){cnt++;break;}x/=10;}}cout<<cnt<<endl;
}

B.扩散

用BFS(广度优先搜索)就可以解决。

不过要注意的是如果以(0,0)为起点,黑点是会扩散到第2,3,4象限(有负值)

所以我们改变一下坐标轴的相对位置,把这四个点统统上移。
(量不重要,只要保证不会在染色时染到其他象限即可)

#include<bits/stdc++.h>
using namespace std;
struct node
{int x,y,t;node() {}node(int xx,int yy,int tt):x(xx),y(yy),t(tt) {}
};
int a[10000][10000];
int dx[4]= {1,-1,0,0};
int dy[4]= {0,0,1,-1};
int ans;
void bfs()
{queue<node> q;q.push(node(0+2500,0+2500,0));q.push(node(2020+2500,11+2500,0));q.push(node(11+2500,14+2500,0));q.push(node(2000+2500,2000+2500,0));a[0+2500][0+2500]=1;a[2020+2500][11+2500]=1;a[11+2500][14+2500]=1;a[2000+2500][2000+2500]=1;while(!q.empty()){node tmp=q.front();q.pop();if(tmp.t==2020) break;for(int i=0; i<4; i++){int xx=tmp.x+dx[i];int yy=tmp.y+dy[i];if(!a[xx][yy]){a[xx][yy]=1,ans++;//cout<<xx<<" "<<yy<<" "<<tmp.t+1<<endl;q.push(node(xx,yy,tmp.t+1));}}}
}
int main()
{ans=4;memset(a,0,sizeof(a));bfs();cout<<ans<<endl;
}

C.阶乘约数

这个就有点意思了。
首先要先了解一个东西:唯一分解定理

度娘上东西有点多,我把我们这题所要用到的提取了出来:

一个大于1的正整数N,如果它的标准分解式为N=(p1a1) * (p2a2)* …* (pnan)
(p1<p2<…<pn且都为素数),
那么它的正因数个数为F(N)=(1+a1) * (1+a2) * …*(1+an)。

知道这个之后这题思路就清晰了:
100!是从1乘到100,那么我们把每个数的分解式都求出来,然后乘起来就能得到100!的标准分解式。
(附:ax * ay =ax+y

#include<bits/stdc++.h>
using namespace std;
int prime[1000];
bool is_prime[1000];void oula()
{prime[0]=0;memset(is_prime,false,sizeof(is_prime));is_prime[0]=is_prime[1]=true;for(int i=2;i<=1000;i++){if(!is_prime[i]){prime[++prime[0]]=i;for(int j=1;j<=prime[0];j++){if(i*prime[j]>1000) break;is_prime[i*prime[j]]=true;if(i%prime[j]==0) break;}}}
}
int main()
{oula();map<int,int> q;for(int i=2;i<=100;i++){int l=1;int x=i;while(l<=prime[0]&&x){if(x%prime[l]==0){q[prime[l]]++;x/=prime[l];}else l++;}}map<int,int>::iterator it;long long ans=1;  //开longlong,不然会爆掉for(it=q.begin();it!=q.end();it++){ans*=(it->second+1);}cout<<ans<<endl;
}

D.本质上升序列

题意不难理解,对于这道题的解法也有很多。

我这里用的是BFS+Set集合存结果,每次存的时候都要查重一下。
最后只要看一下Set集合的大小就ok。

缺点就是耗时高,如果是编程题,1000%的会T掉。

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
struct node
{string s;int pos;node() {}node(string ss,int p):s(ss),pos(p) {}
};
string ques="tocyjkdzcieoiodfpbgcncsrjbhmugdnojjddhllnofawllbhfiadgdcdjstemphmnjihecoapdjjrprrqnhgccevdarufmliqijgihhfgdcmxvicfauachlifhafpdccfseflcdgjncadfclvfmadvrnaaahahndsikzssoywakgnfjjaihtniptwoulxbaeqkqhfwl";
set<string> answer;
void bfs()
{queue<node> q;int len=ques.size();for(int i=0; i<len; i++){string sss="";sss+=ques[i];if(answer.find(sss)==answer.end()){q.push(node(sss,i));answer.insert(sss);}}while(q.size()){string ss=q.front().s;int pos=q.front().pos;q.pop();for(int i=pos+1; i<len; i++){if(ques[i]>ques[pos]&&answer.find(ss+ques[i])==answer.end()){answer.insert(ss+ques[i]);q.push(node(ss+ques[i],i));}}}cout<<answer.size()<<endl;
}
int main()
{bfs();
}

E.玩具蛇

DFS(深度优先搜索)。
做法就是以每一个格子为出发点,寻找在出发点固定的情况下能够放置的最大方案数。

难度远远低于B题。

#include<iostream>
#include<algorithm>
#include<cstring>
#define inf 0x3f3f3f3f
using namespace std;const int maxn=3e5+100;bool vis[4][4];
int cnt;
int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};
void dfs(int x,int y,int ans)
{if(ans==16){cnt++;return;}for(int i=0;i<4;i++){int xx=x+dx[i];int yy=y+dy[i];if(xx<4&&xx>=0&&yy<4&&yy>=0){if(!vis[xx][yy]){vis[xx][yy]=true;dfs(xx,yy,ans+1);vis[xx][yy]=false;}}}
}int main(){cnt=0;memset(vis,false,sizeof(vis));for(int i=0;i<4;i++){for(int j=0;j<4;j++){vis[i][j]=true;dfs(i,j,1);vis[i][j]=false;}}cout<<cnt<<endl;
}

剩下的题目,

下次亿定!

临时抱佛脚之第十一届蓝桥杯国赛B组部分题解(Part 1)相关推荐

  1. 2020第十一届蓝桥杯国赛Python组

    A美丽的2 答案:563 res = 0 for i in range(1, 2021):if '2' in str(i):res += 1 print(res) # 563 B合数个数 模拟即可 答 ...

  2. 2019年第十一届蓝桥杯国赛JavaB组第H题——“大胖子走迷宫”题目及解析

    测试样例 Input: 9 5 +++++++++ +++++++++ +++++++++ +++++++++ +++++++++ ***+***** +++++++++ +++++++++ ++++ ...

  3. 2020年第十一届蓝桥杯 - 国赛 - Python大学组 - H.答疑

    题目链接 Ideas 2020年第十一届蓝桥杯 - 国赛 - Python大学组 - H.答疑 Code Python if __name__ == '__main__':n = int(input( ...

  4. 2020年第十一届蓝桥杯 - 国赛 - Java研究生组 - F.循环小数

    2020年第十一届蓝桥杯 - 国赛 - Java研究生组 - F.循环小数 在线评测 Ideas 对于一个纯循环小数,假设循环节为l,则小数为0.llll-,转换为分数就是 l / (10 ** n ...

  5. 第十一届蓝桥杯国赛题目

    以下是第十一届蓝桥杯国赛题目,供大家学习参考(提取码失效可以评论我) 百度云: 链接: https://pan.baidu.com/s/1g1o-px-RUVoXLLhRDS8cXQ 提取码: fgf ...

  6. 2020/第十一届蓝桥杯国赛/Java-A

    试题A:和数个数 boolean isPrime(int n) {for (int i = 2; i <= Math.sqrt(n); i++) {if (n % i == 0) {return ...

  7. 2020十一届蓝桥杯国赛二等奖Java B组

    大家觉得写还可以,可以点赞.收藏.关注一下吧! 也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn 文章目录 参考博客https://blo ...

  8. 第十一届蓝桥杯国赛H题答疑

    第十一届蓝桥杯国赛H题答疑 题目 [题目描述] [输入格式] [输出格式] [样例输入] [样例输出] [样例说明] [评测用例规模与约定] 分析(这篇水文的精髓) 代码 题目 万一图片加载不出来的话 ...

  9. 2020第十一届蓝桥杯省赛C组第一场

    2020第十一届蓝桥杯省赛C组第一场 试题 A: 指数计算 问题描述 题解 试题 B: 解密 问题描述 题解 试题 C: 跑步训练 问题描述 题解 试题 D: 合并检测 问题描述 题解 试题 E: R ...

最新文章

  1. 深蓝学院的深度学习理论与实践课程:第二章
  2. 【PHPWord】超链接
  3. java web 自定义标签_如何在JavaWeb程序中使用自定义标签
  4. 防灾科技学院期末软件测试,防灾科技学院2014 软件测试客观题
  5. [Java] grails 安装手记
  6. xss漏洞的poc与exp
  7. SAP UI5 scroll down to get more
  8. 如何集成和使用EclEmma插件来获得良好的Junit覆盖率
  9. JavaEE各种Javadoc的下载
  10. Alamofire源码解读系列(十二)之请求(Request)
  11. Hadoop Hbase 模型结构
  12. Hadoop常见端口总结
  13. select不能触发change_SQL之警觉触发
  14. JAVA实现邮件发送
  15. 多年收集的一些稀有软件4
  16. java计算机毕业设计中小型超市管理系统录像补源码+数据库+系统+lw文档+mybatis+运行部署
  17. 小米路由器 一直常亮黄灯 修复方法
  18. Java笔记 - 黑马程序员_06(Stream,字节流,字符流,对象流(序列化流),属性集(Properties))
  19. 太强!拿下腾讯公司技术突破奖,腾讯云 RTC 实时音视频技术到底了有多牛?...
  20. 边缘计算与深度学习综述

热门文章

  1. scanf与printf的用法
  2. 实现车辆检测+安全算法,玩转智慧交通AI应用!AidLux实战训练营第二期圆满收官
  3. Electron取消顶部菜单栏
  4. 一个程序员的2018年终总结
  5. input属性及其应用
  6. day04-分支和循环
  7. 操作系统 -- 中断
  8. Supervisor客户端命令
  9. 华为数通hcie人数有多少?
  10. 第十八届全国大学生智能车竞赛分赛区比赛赛道简化建议