日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

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

發(fā)布時(shí)間:2025/3/15 java 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【OJ】2020蓝桥杯模拟赛题解(Java语言描述) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

T1

問(wèn)題描述
  1200000有多少個(gè)約數(shù)(只計(jì)算正約數(shù))。
答案提交
  這是一道結(jié)果填空的題,你只需要算出結(jié)果后提交即可。本題的結(jié)果為一個(gè)整數(shù),在提交答案時(shí)只填寫(xiě)這個(gè)整數(shù),填寫(xiě)多余的內(nèi)容將無(wú)法得分。

分析:
填空題+小數(shù)據(jù),暴力求解即可:

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

問(wèn)題描述
  在計(jì)算機(jī)存儲(chǔ)中,15.125GB是多少M(fèi)B?
答案提交
  這是一道結(jié)果填空的題,你只需要算出結(jié)果后提交即可。本題的結(jié)果為一個(gè)整數(shù),在提交答案時(shí)只填寫(xiě)這個(gè)整數(shù),填寫(xiě)多余的內(nèi)容將無(wú)法得分。

分析:
1GB=1024MB。

答案:15488

T3

問(wèn)題描述
  一棵包含有2019個(gè)結(jié)點(diǎn)的二叉樹(shù),最多包含多少個(gè)葉結(jié)點(diǎn)?
答案提交
  這是一道結(jié)果填空的題,你只需要算出結(jié)果后提交即可。本題的結(jié)果為一個(gè)整數(shù),在提交答案時(shí)只填寫(xiě)這個(gè)整數(shù),填寫(xiě)多余的內(nèi)容將無(wú)法得分。

分析:
我記不得是不是二叉樹(shù)了,如果是二叉樹(shù),結(jié)果就是1010((2019+1)/2);否則如果是樹(shù),就是2018。

T4

問(wèn)題描述
  在1至2019中,有多少個(gè)數(shù)的數(shù)位中包含數(shù)字9?
  注意,有的數(shù)中的數(shù)位中包含多個(gè)9,這個(gè)數(shù)只算一次。例如,1999這個(gè)數(shù)包含數(shù)字9,在計(jì)算只是算一個(gè)數(shù)。
答案提交
  這是一道結(jié)果填空的題,你只需要算出結(jié)果后提交即可。本題的結(jié)果為一個(gè)整數(shù),在提交答案時(shí)只填寫(xiě)這個(gè)整數(shù),填寫(xiě)多余的內(nèi)容將無(wú)法得分。

分析:
這題本該是有講究的,可惜數(shù)據(jù)量小還是填空題,就可以開(kāi)暴力:

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

問(wèn)題描述
  一個(gè)正整數(shù)如果任何一個(gè)數(shù)位不大于右邊相鄰的數(shù)位,則稱為一個(gè)數(shù)位遞增的數(shù),例如1135是一個(gè)數(shù)位遞增的數(shù),而1024不是一個(gè)數(shù)位遞增的數(shù)。
  給定正整數(shù) n,請(qǐng)問(wèn)在整數(shù) 1 至 n 中有多少個(gè)數(shù)位遞增的數(shù)?
輸入格式
  輸入的第一行包含一個(gè)整數(shù) n。
輸出格式
  輸出一行包含一個(gè)整數(shù),表示答案。
樣例輸入
30
樣例輸出
26
評(píng)測(cè)用例規(guī)模與約定
  對(duì)于 40% 的評(píng)測(cè)用例,1 <= n <= 1000。
  對(duì)于 80% 的評(píng)測(cè)用例,1 <= n <= 100000。
  對(duì)于所有評(píng)測(cè)用例,1 <= n <= 1000000。

分析:
  開(kāi)暴力求解,利用char[]來(lái)逐一比較。

答案:

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

問(wèn)題描述
  小明對(duì)類似于 hello 這種單詞非常感興趣,這種單詞可以正好分為四段,第一段由一個(gè)或多個(gè)輔音字母組成,第二段由一個(gè)或多個(gè)元音字母組成,第三段由一個(gè)或多個(gè)輔音字母組成,第四段由一個(gè)或多個(gè)元音字母組成。
  給定一個(gè)單詞,請(qǐng)判斷這個(gè)單詞是否也是這種單詞,如果是請(qǐng)輸出yes,否則請(qǐng)輸出no。
  元音字母包括 a, e, i, o, u,共五個(gè),其他均為輔音字母。
輸入格式
  輸入一行,包含一個(gè)單詞,單詞中只包含小寫(xiě)英文字母。
輸出格式
  輸出答案,或者為yes,或者為no。
樣例輸入
lanqiao
樣例輸出
yes
樣例輸入
world
樣例輸出
no
評(píng)測(cè)用例規(guī)模與約定
  對(duì)于所有評(píng)測(cè)用例,單詞中的字母?jìng)€(gè)數(shù)不超過(guò)100。

分析:
  使用正則表達(dá)式即可,matches()是since1.4的,就能用。
注意這個(gè)正則怎么寫(xiě)的,我們把元音字母1+和輔音字母1+分別做成正則表達(dá)式的子表達(dá)式,最后使用字符串連接湊成完整的正則表達(dá)式。
[aeiou]+[aeiou]+[aeiou]+ 表示任意 a、e、i、o、u 元素連續(xù)出現(xiàn)一次以上的貪婪匹配,
[bcdfghjklmnpqrstvwxyz]+[bcdfghjklmnpqrstvwxyz]+[bcdfghjklmnpqrstvwxyz]+ 表示輔音字母元素連續(xù)出現(xiàn)一次以上的貪婪匹配。
  由于是貪婪匹配,所以能盡可能多的匹配,而不會(huì)導(dǎo)致意外的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

問(wèn)題描述
  在數(shù)列 a[1], a[2], …, a[n] 中,如果對(duì)于下標(biāo) i, j, k 滿足 0<i<j<k<n+1 且 a[i]<a[j]<a[k],則稱 a[i], a[j], a[k] 為一組遞增三元組,a[j]為遞增三元組的中心。
  給定一個(gè)數(shù)列,請(qǐng)問(wèn)數(shù)列中有多少個(gè)元素可能是遞增三元組的中心。
輸入格式
  輸入的第一行包含一個(gè)整數(shù) n。
  第二行包含 n 個(gè)整數(shù) a[1], a[2], …, a[n],相鄰的整數(shù)間用空格分隔,表示給定的數(shù)列。
輸出格式
  輸出一行包含一個(gè)整數(shù),表示答案。
樣例輸入
5
1 2 5 3 5
樣例輸出
2
樣例說(shuō)明
  a[2] 和 a[4] 可能是三元組的中心。
評(píng)測(cè)用例規(guī)模與約定
  對(duì)于 50% 的評(píng)測(cè)用例,2 <= n <= 100,0 <= 數(shù)列中的數(shù) <= 1000。
  對(duì)于所有評(píng)測(cè)用例,2 <= n <= 1000,0 <= 數(shù)列中的數(shù) <= 10000。

分析:
  開(kāi)三指針即可,一個(gè)從1開(kāi)始移動(dòng),剩下兩個(gè)就在兩側(cè)移動(dòng),只要找到一組符合要求的就可以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

問(wèn)題描述
  小明有一塊空地,他將這塊空地劃分為 n 行 m 列的小塊,每行和每列的長(zhǎng)度都為 1。
  小明選了其中的一些小塊空地,種上了草,其他小塊仍然保持是空地。
  這些草長(zhǎng)得很快,每個(gè)月,草都會(huì)向外長(zhǎng)出一些,如果一個(gè)小塊種了草,則它將向自己的上、下、左、右四小塊空地?cái)U(kuò)展,這四小塊空地都將變?yōu)橛胁莸男K。
  請(qǐng)告訴小明,k 個(gè)月后空地上哪些地方有草。
輸入格式
  輸入的第一行包含兩個(gè)整數(shù) n, m。
  接下來(lái) n 行,每行包含 m 個(gè)字母,表示初始的空地狀態(tài),字母之間沒(méi)有空格。如果為小數(shù)點(diǎn),表示為空地,如果字母為 g,表示種了草。
  接下來(lái)包含一個(gè)整數(shù) k。
輸出格式
  輸出 n 行,每行包含 m 個(gè)字母,表示 k 個(gè)月后空地的狀態(tài)。如果為小數(shù)點(diǎn),表示為空地,如果字母為 g,表示長(zhǎng)了草。
樣例輸入
4 5
.g…

…g…

2
樣例輸出
gggg.
gggg.
ggggg
.ggg.
評(píng)測(cè)用例規(guī)模與約定
  對(duì)于 30% 的評(píng)測(cè)用例,2 <= n, m <= 20。
  對(duì)于 70% 的評(píng)測(cè)用例,2 <= n, m <= 100。
  對(duì)于所有評(píng)測(cè)用例,2 <= n, m <= 1000,1 <= k <= 1000。

分析:
  開(kāi)一個(gè)BFS,注意判斷防止重復(fù)搜索。
搜的時(shí)候,使用雙隊(duì)列,一個(gè)裝x一個(gè)裝y,每一輪都讓原隊(duì)列元素出隊(duì),周?chē)芊N草的位置入隊(duì)。
  循環(huán)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

問(wèn)題描述
  小明想知道,滿足以下條件的正整數(shù)序列的數(shù)量:
  1. 第一項(xiàng)為 n;
  2. 第二項(xiàng)不超過(guò) n;
  3. 從第三項(xiàng)開(kāi)始,每一項(xiàng)小于前兩項(xiàng)的差的絕對(duì)值。
  請(qǐng)計(jì)算,對(duì)于給定的 n,有多少種滿足條件的序列。
輸入格式
  輸入一行包含一個(gè)整數(shù) n。
輸出格式
  輸出一個(gè)整數(shù),表示答案。答案可能很大,請(qǐng)輸出答案除以10000的余數(shù)。
樣例輸入
4
樣例輸出
7
樣例說(shuō)明
  以下是滿足條件的序列:
  4 1
  4 1 1
  4 1 2
  4 2
  4 2 1
  4 3
  4 4
評(píng)測(cè)用例規(guī)模與約定
  對(duì)于 20% 的評(píng)測(cè)用例,1 <= n <= 5;
  對(duì)于 50% 的評(píng)測(cè)用例,1 <= n <= 10;
  對(duì)于 80% 的評(píng)測(cè)用例,1 <= n <= 100;
  對(duì)于所有評(píng)測(cè)用例,1 <= n <= 1000。

分析:
  使用動(dòng)態(tài)規(guī)劃求解,動(dòng)態(tài)轉(zhuǎn)移方程: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

問(wèn)題描述
  小明要組織一臺(tái)晚會(huì),總共準(zhǔn)備了 n 個(gè)節(jié)目。然后晚會(huì)的時(shí)間有限,他只能最終選擇其中的 m 個(gè)節(jié)目。
  這 n 個(gè)節(jié)目是按照小明設(shè)想的順序給定的,順序不能改變。
  小明發(fā)現(xiàn),觀眾對(duì)于晚上的喜歡程度與前幾個(gè)節(jié)目的好看程度有非常大的關(guān)系,他希望選出的第一個(gè)節(jié)目盡可能好看,在此前提下希望第二個(gè)節(jié)目盡可能好看,依次類推。
  小明給每個(gè)節(jié)目定義了一個(gè)好看值,請(qǐng)你幫助小明選擇出 m 個(gè)節(jié)目,滿足他的要求。
輸入格式
  輸入的第一行包含兩個(gè)整數(shù) n, m ,表示節(jié)目的數(shù)量和要選擇的數(shù)量。
  第二行包含 n 個(gè)整數(shù),依次為每個(gè)節(jié)目的好看值。
輸出格式
  輸出一行包含 m 個(gè)整數(shù),為選出的節(jié)目的好看值。
樣例輸入
5 3
3 1 2 5 4
樣例輸出
3 5 4
樣例說(shuō)明
  選擇了第1, 4, 5個(gè)節(jié)目。
評(píng)測(cè)用例規(guī)模與約定
  對(duì)于 30% 的評(píng)測(cè)用例,1 <= n <= 20;
  對(duì)于 60% 的評(píng)測(cè)用例,1 <= n <= 100;
  對(duì)于所有評(píng)測(cè)用例,1 <= n <= 100000,0 <= 節(jié)目的好看值 <= 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());} }

總結(jié)

以上是生活随笔為你收集整理的【OJ】2020蓝桥杯模拟赛题解(Java语言描述)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。