2023年藍橋杯校內模擬賽

2022-02-05 10:10:15 字數 4122 閱讀 3485

目錄

第6題第7題

第8題第9題

第10題

這次校內模擬賽頗為簡單,筆者在差不多兩個半小時即做完了全部的題目,也取得了還挺不錯的成績,下面我就給大家分享一下自己的**。1-4題其實不需要**即可解決,筆者在此就不多闡述了。

問題描述

在數列 a[1], a[2], ..., a[n] 中,如果對於下標 i, j, k 滿足 0本來筆者看到這道題還以為要找出所有的遞增三元組,本打算暴力搜尋所有可能。後來發現只需要找出中心點的個數,那只需要迴圈所有的點,判斷之前有沒有小於它的數,後面有沒有大於它的數,存在則符合條件。

#includeusing namespace std; 

const int n = 1005;

int n, arr[n];

bool judge(int x);

int main() ;

bool judge(int x);

bool func();

int main()

bool func()

bool judge(int x)

問題描述

乙個正整數如果任何乙個數字不大於右邊相鄰的數字,則稱為乙個數字遞增的數,例如1135是乙個數字遞增的數,而1024不是乙個數字遞增的數。

給定正整數 n,請問在整數 1 至 n 中有多少個數字遞增的數?

輸入格式

輸入的第一行包含乙個整數 n。

輸出格式

輸出一行包含乙個整數,表示答案。

樣例輸入

30樣例輸出

26評測用例規模與約定

對於 40% 的評測用例,1 <= n <= 1000。

對於 80% 的評測用例,1 <= n <= 100000。

對於所有評測用例,1 <= n <= 1000000。

迴圈1-n的所有數字。每次取數字的最後一位,然後整除10,對比每次取到的最後一位,若中途有一位不符合則判定為false。

#include #includeusing namespace std;

int n, ans;

bool judge(int num);

int main()

bool judge(int num)

return true;

}

問題描述

小明有一塊空地,他將這塊空地劃分為 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。

每一回都迴圈所有位置,將每個'g'周圍是空地的地方都設為『n』,然後再次迴圈將『n'的地方都設為『g』。其實可以用bfs去做,將『g』節點全部儲存在佇列中,然後將逐個取出將周圍的空地設為『g'。

不可以直接在迴圈的過程中直接將空地設為『g』,這樣會破壞這次迴圈本身的樣子。

#include using namespace std;

int n, m, k;

char map[1000][1000];

int _next[2]=,,,};

void func();

int main()

for(int x=0;x問題描述

小明想知道,滿足以下條件的正整數序列的數量:

1. 第一項為 n;

2. 第二項不超過 n;

3. 從第三項開始,每一項小於前兩項的差的絕對值。

請計算,對於給定的 n,有多少種滿足條件的序列。

輸入格式

輸入一行包含乙個整數 n。

輸出格式

輸出乙個整數,表示答案。答案可能很大,請輸出答案除以10000的餘數。

樣例輸入

4樣例輸出

7樣例說明

以下是滿足條件的序列:

4 14 1 1

4 1 2

4 24 2 1

4 34 4

評測用例規模與約定

對於 20% 的評測用例,1 <= n <= 5;

對於 50% 的評測用例,1 <= n <= 10;

對於 80% 的評測用例,1 <= n <= 100;

對於所有評測用例,1 <= n <= 1000。

這道題是乙個dp題。將每次的結果儲存在陣列中。找出後序數字中所有可能,符合最優子結構,將前兩個數字遞迴即可。

注意後面什麼數字都不加也是一種可能,筆者當時找了好久的bug才發現這個問題。

#include #include using namespace std;

#define n 10000

int n;

int dp[1005][1005];

int count(int n1, int n2);

int main()

int count(int n1, int n2)

問題描述

小明要組織一台晚會,總共準備了 n 個節目。然後晚會的時間有限,他只能最終選擇其中的 m 個節目。

這 n 個節目是按照小明設想的順序給定的,順序不能改變。

小明發現,觀眾對於晚上的喜歡程度與前幾個節目的好看程度有非常大的關係,他希望選出的第乙個節目盡可能好看,在此前提下希望第二個節目盡可能好看,依次類推。

小明給每個節目定義了乙個好看值,請你幫助小明選擇出 m 個節目,滿足他的要求。

輸入格式

輸入的第一行包含兩個整數 n, m ,表示節目的數量和要選擇的數量。

第二行包含 n 個整數,依次為每個節目的好看值。

輸出格式

輸出一行包含 m 個整數,為選出的節目的好看值。

樣例輸入

5 33 1 2 5 4

樣例輸出

3 5 4

樣例說明

選擇了第1, 4, 5個節目。

評測用例規模與約定

對於 30% 的評測用例,1 <= n <= 20;

對於 60% 的評測用例,1 <= n <= 100;

對於所有評測用例,1 <= n <= 100000,0 <= 節目的好看值 <= 100000。

第一次找出第1個到第(n-m+1)個節目中最好看的,第二次找出第乙個節目的位置後到(n-m+2)中最好看的,如此往後。

我們定義乙個型別包含位置資訊和好看程度,第一次將第1個到第(n-m+1)個節目按好看程度排序,取第乙個節目,記下節目位置cur;然後將節目按位置排序還原,排序cur接下來的節目,取第cur+1個節目,再復原節目,如此往後。

#include#includeusing namespace std;

class nodeprogram[10005],temp[10005];

int n,m;

int choice[10005];

bool cmp_index(node a,node b)

int main()

int pre=0; // 區間最左端的位置

int cur=n-(m-1); // 區間最右端的位置

for(int i=0;ifor(int i=0;icout

}

2023年藍橋杯校內模擬賽題解

1200000有多少個約數 只計算正約數 include int main printf d n count return 0 在計算機儲存中,15.125gb是多少mb?include int main 在1至2019中,有多少個數的數字中包含數字9?注意,有的數中的數字中包含多個9,這個數隻算一...

2020藍橋杯校內模擬賽題解

第二題 問題描述 在1至2019中,有多少個數的數字中包含數字9?注意,有的數中的數字包含多個9,這個數隻算一次。例如,1999這個數包含數字9,在計算只是算乙個數。include using namespace std intmain cout count endl cout ending.end...

藍橋杯校內模擬2020

問題描述 小明想知道,滿足以下條件的正整數序列的數量 1.第一項為 n 2.第二項不超過 n 3.從第三項開始,每一項小於前兩項的差的絕對值。請計算,對於給定的 n,有多少種滿足條件的序列。輸入格式 輸入一行包含乙個整數 n。輸出格式 輸出乙個整數,表示答案。答案可能很大,請輸出答案除以10000的...