T1

问题描述
  1200000有多少个约数(只计算正约数)。
答案提交
  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

分析:
填空题+小数据,暴力求解即可:

public class Test1 {public static void main(String[] args) {int counter = 0;for (int i = 1; i <= 1200000; i++) {if (1200000 % i == 0) {counter++;}}System.out.println(counter);}
}

答案:96

T2

问题描述
  在计算机存储中,15.125GB是多少MB?
答案提交
  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

分析:
1GB=1024MB。

答案:15488

T3

问题描述
  一棵包含有2019个结点的二叉树,最多包含多少个叶结点?
答案提交
  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

分析:
我记不得是不是二叉树了,如果是二叉树,结果就是1010((2019+1)/2);否则如果是树,就是2018。

T4

问题描述
  在1至2019中,有多少个数的数位中包含数字9?
  注意,有的数中的数位中包含多个9,这个数只算一次。例如,1999这个数包含数字9,在计算只是算一个数。
答案提交
  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

分析:
这题本该是有讲究的,可惜数据量小还是填空题,就可以开暴力:

public class Main {public static void main(String[] args) {int counter = 0;for (int i = 1; i <= 2019; i++) {if (Integer.toString(i).contains("9")) {counter++;}}System.out.println(counter);}
}

答案:544

T5

问题描述
  一个正整数如果任何一个数位不大于右边相邻的数位,则称为一个数位递增的数,例如1135是一个数位递增的数,而1024不是一个数位递增的数。
  给定正整数 n,请问在整数 1 至 n 中有多少个数位递增的数?
输入格式
  输入的第一行包含一个整数 n。
输出格式
  输出一行包含一个整数,表示答案。
样例输入
30
样例输出
26
评测用例规模与约定
  对于 40% 的评测用例,1 <= n <= 1000。
  对于 80% 的评测用例,1 <= n <= 100000。
  对于所有评测用例,1 <= n <= 1000000。

分析:
  开暴力求解,利用char[]来逐一比较。

答案:

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int num = scanner.nextInt(), counter = 0;scanner.close();char[] temp;char prev;outer:for (int i = 1; i <= num; i++) {temp = Integer.toString(i).toCharArray();prev = temp[0];for (int j = 1; j < temp.length; j++) {if (prev > temp[j]) {continue outer;}prev = temp[j];}counter++;}System.out.println(counter);}
}

T6

问题描述
  小明对类似于 hello 这种单词非常感兴趣,这种单词可以正好分为四段,第一段由一个或多个辅音字母组成,第二段由一个或多个元音字母组成,第三段由一个或多个辅音字母组成,第四段由一个或多个元音字母组成。
  给定一个单词,请判断这个单词是否也是这种单词,如果是请输出yes,否则请输出no。
  元音字母包括 a, e, i, o, u,共五个,其他均为辅音字母。
输入格式
  输入一行,包含一个单词,单词中只包含小写英文字母。
输出格式
  输出答案,或者为yes,或者为no。
样例输入
lanqiao
样例输出
yes
样例输入
world
样例输出
no
评测用例规模与约定
  对于所有评测用例,单词中的字母个数不超过100。

分析:
  使用正则表达式即可,matches()是since1.4的,就能用。
注意这个正则怎么写的,我们把元音字母1+和辅音字母1+分别做成正则表达式的子表达式,最后使用字符串连接凑成完整的正则表达式。
[aeiou]+[aeiou]+[aeiou]+ 表示任意 a、e、i、o、u 元素连续出现一次以上的贪婪匹配,
[bcdfghjklmnpqrstvwxyz]+[bcdfghjklmnpqrstvwxyz]+[bcdfghjklmnpqrstvwxyz]+ 表示辅音字母元素连续出现一次以上的贪婪匹配。
  由于是贪婪匹配,所以能尽可能多的匹配,而不会导致意外的Bug。

答案:

import java.util.Scanner;public class Main {public static void main(String[] args) {String regex1 = "[aeiou]+", regex2 = "[bcdfghjklmnpqrstvwxyz]+";Scanner scanner = new Scanner(System.in);System.out.println((scanner.nextLine().matches(regex2+regex1+regex2+regex1)) ? "yes" : "no");scanner.close();}
}

T7

问题描述
  在数列 a[1], a[2], …, a[n] 中,如果对于下标 i, j, k 满足 0<i<j<k<n+1 且 a[i]<a[j]<a[k],则称 a[i], a[j], a[k] 为一组递增三元组,a[j]为递增三元组的中心。
  给定一个数列,请问数列中有多少个元素可能是递增三元组的中心。
输入格式
  输入的第一行包含一个整数 n。
  第二行包含 n 个整数 a[1], a[2], …, a[n],相邻的整数间用空格分隔,表示给定的数列。
输出格式
  输出一行包含一个整数,表示答案。
样例输入
5
1 2 5 3 5
样例输出
2
样例说明
  a[2] 和 a[4] 可能是三元组的中心。
评测用例规模与约定
  对于 50% 的评测用例,2 <= n <= 100,0 <= 数列中的数 <= 1000。
  对于所有评测用例,2 <= n <= 1000,0 <= 数列中的数 <= 10000。

分析:
  开三指针即可,一个从1开始移动,剩下两个就在两侧移动,只要找到一组符合要求的就可以counter++。

答案:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class Main {public static void main(String[] args) throws IOException {BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));int num = Integer.parseInt(reader.readLine()), counter = 0;String[] nums = reader.readLine().split("\\s+");reader.close();int[] array = new int[num];for (int i = 0; i < num; i++) {array[i] = Integer.parseInt(nums[i]);}outer:for (int j = 1; j < num; j++) {for (int i = 0; i < j; i++) {for (int k = j+1; k < num; k++) {if (array[i] < array[j] && array[j] < array[k]) {counter++;continue outer;}}}}System.out.println(counter);}
}

T8

问题描述
  小明有一块空地,他将这块空地划分为 n 行 m 列的小块,每行和每列的长度都为 1。
  小明选了其中的一些小块空地,种上了草,其他小块仍然保持是空地。
  这些草长得很快,每个月,草都会向外长出一些,如果一个小块种了草,则它将向自己的上、下、左、右四小块空地扩展,这四小块空地都将变为有草的小块。
  请告诉小明,k 个月后空地上哪些地方有草。
输入格式
  输入的第一行包含两个整数 n, m。
  接下来 n 行,每行包含 m 个字母,表示初始的空地状态,字母之间没有空格。如果为小数点,表示为空地,如果字母为 g,表示种了草。
  接下来包含一个整数 k。
输出格式
  输出 n 行,每行包含 m 个字母,表示 k 个月后空地的状态。如果为小数点,表示为空地,如果字母为 g,表示长了草。
样例输入
4 5
.g…

…g…

2
样例输出
gggg.
gggg.
ggggg
.ggg.
评测用例规模与约定
  对于 30% 的评测用例,2 <= n, m <= 20。
  对于 70% 的评测用例,2 <= n, m <= 100。
  对于所有评测用例,2 <= n, m <= 1000,1 <= k <= 1000。

分析:
  开一个BFS,注意判断防止重复搜索。
搜的时候,使用双队列,一个装x一个装y,每一轮都让原队列元素出队,周围能种草的位置入队。
  循环k轮,效率不至于太差。
  注意判越界。

答案:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;public class Main {public static void main(String[] args) throws IOException {//sb Java6Queue<Integer> queue_x = new LinkedList<Integer>();Queue<Integer> queue_y = new LinkedList<Integer>();BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));String[] line1 = reader.readLine().split("\\s+");int n = Integer.parseInt(line1[0]), m = Integer.parseInt(line1[1]);char[][] graph = new char[n][m];for (int i = 0; i < n; i++) {char[] temp = reader.readLine().toCharArray();for (int j = 0; j < m; j++) {graph[i][j] = temp[j];if (temp[j] == 'g') {queue_x.offer(i);queue_y.offer(j);}}}int k = Integer.parseInt(reader.readLine());reader.close();for (int i = 0; i < k; i++) {int length = queue_x.size();for (int j = 0; j < length; j++) {int x = queue_x.poll(), y = queue_y.poll();if (x != 0 && graph[x-1][y] == '.') {queue_x.offer(x-1);queue_y.offer(y);graph[x-1][y] = 'g';}if (x != n-1 && graph[x+1][y] == '.') {queue_x.offer(x+1);queue_y.offer(y);graph[x+1][y] = 'g';}if (y != 0 && graph[x][y-1] == '.') {queue_x.offer(x);queue_y.offer(y-1);graph[x][y-1] = 'g';}if (y != m-1 && graph[x][y+1] == '.') {queue_x.offer(x);queue_y.offer(y+1);graph[x][y+1] = 'g';}}}StringBuilder result;for (int i = 0; i < n; i++) {result = new StringBuilder();for (int j = 0; j < m; j++) {result.append(graph[i][j]);}System.out.println(result);}}
}

T9

问题描述
  小明想知道,满足以下条件的正整数序列的数量:
  1. 第一项为 n;
  2. 第二项不超过 n;
  3. 从第三项开始,每一项小于前两项的差的绝对值。
  请计算,对于给定的 n,有多少种满足条件的序列。
输入格式
  输入一行包含一个整数 n。
输出格式
  输出一个整数,表示答案。答案可能很大,请输出答案除以10000的余数。
样例输入
4
样例输出
7
样例说明
  以下是满足条件的序列:
  4 1
  4 1 1
  4 1 2
  4 2
  4 2 1
  4 3
  4 4
评测用例规模与约定
  对于 20% 的评测用例,1 <= n <= 5;
  对于 50% 的评测用例,1 <= n <= 10;
  对于 80% 的评测用例,1 <= n <= 100;
  对于所有评测用例,1 <= n <= 1000。

分析:
  使用动态规划求解,动态转移方程:f[i][j]=f[j][1]+…+f[j][abs(i−j)−1]+1f[i][j] = f[j][1] + … + f[j][abs(i-j)-1] + 1f[i][j]=f[j][1]+…+f[j][abs(i−j)−1]+1

答案:

import java.util.Scanner;public class Main {private static int[][] array;public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int num = scanner.nextInt();scanner.close();array = new int[num+1][num+1];int counter = 0;for (int i = 1; i <= num; i++) {counter += count(num, i);}System.out.println(counter % 10000);}private static int count(int n, int m) {if (array[n][m] != 0) {return array[n][m];}int temp = 1;for (int j = 1; j < Math.abs(n - m); j++) {temp = (temp + count(m, j)) % 10000;}return array[n][m] = temp;}}

T10

问题描述
  小明要组织一台晚会,总共准备了 n 个节目。然后晚会的时间有限,他只能最终选择其中的 m 个节目。
  这 n 个节目是按照小明设想的顺序给定的,顺序不能改变。
  小明发现,观众对于晚上的喜欢程度与前几个节目的好看程度有非常大的关系,他希望选出的第一个节目尽可能好看,在此前提下希望第二个节目尽可能好看,依次类推。
  小明给每个节目定义了一个好看值,请你帮助小明选择出 m 个节目,满足他的要求。
输入格式
  输入的第一行包含两个整数 n, m ,表示节目的数量和要选择的数量。
  第二行包含 n 个整数,依次为每个节目的好看值。
输出格式
  输出一行包含 m 个整数,为选出的节目的好看值。
样例输入
5 3
3 1 2 5 4
样例输出
3 5 4
样例说明
  选择了第1, 4, 5个节目。
评测用例规模与约定
  对于 30% 的评测用例,1 <= n <= 20;
  对于 60% 的评测用例,1 <= n <= 100;
  对于所有评测用例,1 <= n <= 100000,0 <= 节目的好看值 <= 100000。

答案:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;public class Main {public static void main(String[] args) throws IOException {BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));String[] line1 = reader.readLine().split("\\s+");int n = Integer.parseInt(line1[0]), m = Integer.parseInt(line1[1]);String[] line2 = reader.readLine().split("\\s+");reader.close();int[] likes = new int[n], sorted_likes = new int[n];for (int i = 0; i < n; i++) {sorted_likes[i] = likes[i] = Integer.parseInt(line2[i]);}Arrays.sort(sorted_likes);List<Integer> list = new ArrayList<Integer>();for (int i = n - m; i < n; i++) {list.add(sorted_likes[i]);}StringBuilder result = new StringBuilder();for (int i : likes) {if (list.contains(i)) {list.remove(Integer.valueOf(i));result.append(i).append(' ');}}System.out.println(result.toString().trim());}
}

【OJ】2020蓝桥杯模拟赛题解(Java语言描述)相关推荐

  1. 2020蓝桥杯模拟赛题目解析(上)

    下午参加了省的模拟赛,感觉有点难,还是来总结一下,第一次写博客,欢迎各位大佬指点 这一篇一共五道题目 1.计算字节 2.合法括号序列 3.无向连通图的边 4.字母排序 5.反倍数 第一题 问题描述 在 ...

  2. 2020蓝桥杯模拟赛

    官方题解:https://blog.csdn.net/zhengwei223/article/details/105065435 文章目录 第一题 第二题 第三题 第四题 第五题 第六题 第七题 第八 ...

  3. 标题 穿越雷区 java_【蓝桥杯】穿越雷区-java语言描述

    标题:穿越雷区X星的坦克战车很奇怪,它必须交替地穿越正能量辐射区和负能量辐射区才能保持正常运转,否则将报废. 某坦克需要从A区到B区去(A,B区本身是安全区,没有正能量或负能量特征),怎样走才能路径最 ...

  4. 第十三届蓝桥杯模拟赛第二期JAVA组个人题解

    第十三届蓝桥杯模拟赛第二期JAVA组个人题解 文章目录 第十三届蓝桥杯模拟赛第二期JAVA组个人题解 题目1 题目2 题目3 题目4 题目5 题目6 题目7 题目8 题目9 题目10 题目1 小蓝的I ...

  5. 第十四届蓝桥杯模拟赛(第三期)Java组个人题解

    第十四届蓝桥杯模拟赛(第三期)Java组个人题解

  6. 2020年蓝桥杯模拟赛2020.3.25直播笔记

    2020年蓝桥杯模拟赛解题报告(CPP版本) 第八题 长草的bfs写法[我想暴力模拟O kmn] 深搜会爆 bfs像投到水里的涟漪 问题: const int dx[] = {1, 0, -1, 0} ...

  7. 第十三届蓝桥杯模拟赛(第三期)试题与题解 C++

    文章目录 第十三届蓝桥杯模拟赛(第三期)试题与题解 1.试题A 题解:数制转换 2.试题B 题解:枚举 3.试题C 题解:枚举 4.试题D 题解:最小生成树 5.试题E 方法一:暴力求和 方法二:一维 ...

  8. 2022 第十四届蓝桥杯模拟赛第一期(题解与标程)

    第十四届蓝桥杯模拟赛第一期 1. 二进制位数 问题描述 答案提交 参考答案 2. 晨跑 问题描述 答案提交 参考答案 3. 调和级数 问题描述 答案提交 参考答案 程序验证 4. 山谷 问题描述 答案 ...

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

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

最新文章

  1. IDEA那些既好用又好玩的30多款宝贝插件,你知道多少?
  2. 【POI2015】KIN/Kinoman
  3. 任务间共享资源问题总结
  4. 第二阶段—个人工作总结03
  5. (三)slatstack配置管理
  6. curviloft插件怎么用_【su】插件及其功能图示
  7. ADMM算法框架(未完待续 持续更新)
  8. 微信小程序选项卡底线转换滑动动画
  9. trans系列是sci几区_怎么确定SCI论文期刊是几区的
  10. 怎么设置ppt页面的长度和宽度_ppt页面尺寸_ppt尺寸大小的设置方法步骤详解
  11. 中兴服务器bios启动顺序设置,bios设置启动图解教程
  12. 手机APP神器大全,这些被堪称神器的APP你用过哪些!
  13. 交易猫鲨鱼系统源码搭建
  14. 企查查爬取返回405错误的一种处理方法
  15. 企立方-拼多多采集注意的点有哪些
  16. html 代码实现一些符号,大于号、小于号、商标等
  17. 思科模拟器服务器http配置文件,在思科模拟器上通过TFTP拷贝路由器的配置文件到本地...
  18. javaSE-String,StringBuffer和StringBuilder
  19. stm32 spi nss硬件模式配置参考程序
  20. Oracle使用Scott用户登录

热门文章

  1. 游戏开发-cocos creator技巧-cc.Component.EventHandler自定义click事件
  2. mac系统,鼠标移动太慢
  3. INNODB表快速迁移
  4. HDU 4027 Can you answer these queries?(线段树/区间不等更新)
  5. Hadoop 2.5.1集群安装配置
  6. Swift - 触摸事件(点击,移动,抬起等)说明及用例
  7. Java运行原理研究(未完待续)
  8. [转]如何设置win7一直以管理员身份运行
  9. The content of elements must consist of well-formed character data or markup
  10. orm和mysql_orm与mysql