藍橋杯刷題總結 + 應賽技巧

當各位小伙伴們看到這篇文章的時候想必藍橋杯也快開賽了,那么本篇文章博主就來總結一下一些藍橋杯的應賽技巧,那么依舊先來走個流程

那么接下來我們分成幾個板塊進行總結

首先是一些基本語法

編程語言的基本語法

首先是數組,在存數據的時候,建議先從1開始存,為啥這么干呢,博主在刷題的過程中有幾次因為下標從0開始存,導致最后在理解上出現了一些不必要的麻煩。這里我有必要說一下藍橋杯第十五屆回文數組這題,當時就是因為數據從0開始存導致在理解上繞了好大的彎才想明白。

其次是指針,對于大一的小伙伴們或許還是用當初那個模板——類型 *指針名,不用想這么復雜,直接用數組的下標代替即可,我們需要將指針作為一個思維而非死用模板。

最后是設置類型上,建議各位小伙伴直接使用long long 類型,這樣可以避免出現一些數據因為類型范圍小而溢出,從而出現一些麻煩

那么接下來就到了編程的技巧板塊

填空題技巧

技巧一:巧用excel

參考例子:藍橋真題講解-CSDN博客

技巧二:巧用python

其實博主不太推薦技巧二,因為賽場上不一定有pycharm,看情況而定吧

編程技巧

取出一個整數中的某個位的數(個位,十位,百位,千位)

While(條件)
{tmp %= 10;Tmp /= 10;}

這個不建議大家直接當成模板背,建議去理解,而且理解起來也很輕松,當然對于大一只想拿個省獎的同學還是可以考慮記一下的

將某些數存放進哈希表

for(int i = 0; i < n; i++)
{tmp = 數組名[i]hash[tmp] = tmp;
}

經過博主多次考慮決定將之前的模板改成了這個,畢竟是幫助大家,而不是給大家制造麻煩,當然也建議大家先去試試,有問題就在評論區留言,注意哈!這是c++才能用的哦,c語言用了,并且出問題,博主可不背鍋哈!

哈希表統計數

舉兩個例子

非字母的統計

字母的統計

hash[數組名[i] - a]

已經掌握哈希的小伙伴,請忽略這兩點

定義變量時的類型

定義變量時用的類型建議直接用long long 類型(即長整型),并且代碼中所有變量的類型都保持一致,這樣可以避免因超出范圍而出現的bug的麻煩

二維數組的坑

二維數組不能開太大,并且vector<vector<int>>類型的也是一樣不能開太大,怎么判斷自己是否開太大了呢?博主是這么認為的,超過10000的就已經很大了,當然有不同看法的小伙伴歡迎評論區留言,我們可以相互交流一下

數組的創建與傳參

一維數組的定義:類型? ? 數組名[ 元素個數?]? ? ?eg.int arr[10];(用這個也ok),最好放在main函數和其他函數的外面(也就是作為全局變量)

二維數組的定義:類型? 數組名[ 行?][? 列?]?

傳參:

一維數組:

形參部分:類型 函數名(類型 數組名[數組大小])

實參部分: 函數名(數組名,其他參數)

二維數組:

形參部分:類型 函數名(類型數組名[行][列])其中行可以省略,列不可以省略

實參部分:? 函數名(數組名,其他參數)

涉及排序

那么為了避免出現一些不必要的bug,我們可以直接使用sort容器對元素進行排序,那么以下是sort容器的使用模板

sort(數組名【起點位置】, 數組名 + 長度【終點位置】);

sort(數組名【起點位置】, 數組名 + 長度【終點位置】, 函數名);

第二個模板是需要我們自己再寫一個函數,并且只要寫如何排序即可

舉個例子

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
const int N = 100010;
struct node
{int x, y, z;int xw, yw, zw;
}a[N];
bool cmp1(node a, node b)
{return a.xw > b.xw;
}
bool cmp2(node a, node b)
{return a.yw > b.yw;
}
bool cmp3(node a, node b)
{return a.zw > b.zw;
}
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int n = 0;cin >> n;for(int i = 1; i <= n; i++) cin >> a[i].x;for(int i = 1; i <= n; i++) cin >> a[i].y;for(int i = 1; i <= n; i++) cin >> a[i].z;for(int i = 1; i <= n; i++){a[i].xw = a[i].x - a[i].y - a[i].z;a[i].yw = a[i].y - a[i].x - a[i].z;a[i].zw = a[i].z - a[i].y - a[i].x;}long long xv = 0, yv = 0, zv = 0, x_ans = 0, y_ans = 0, z_ans = 0;sort(a + 1, a + 1 + n, cmp1);long long i = 1;xv += a[1].xw;while(i <= n && xv > 0){i++;xv += a[i].xw;x_ans++;} sort(a + 1, a + 1 + n, cmp2);i = 1;yv += a[1].yw;while(i <= n && yv > 0){i++;yv += a[i].yw;y_ans++;} sort(a + 1, a + 1 + n, cmp3);i = 1;zv += a[1].zw;while(i <= n && zv > 0){i++;zv += a[i].zw;z_ans++;} if(xv >= 0 && yv >= 0 && zv >= 0) cout << -1;else cout << max(x_ans, max(y_ans, z_ans));return 0;
}

當然僅供參考?

選自藍橋杯三國游戲

拓展:

如果使用了數據結構,如vector

那么上面的模板就得變成下面的

sort(對象名.begin(), 對象名.end());

sort(對象名.begin(), 對象名.end(), 函數名);

去重容器

定義:set<int,int> 對象名

使用案例(僅供參考)

#include<iostream>
#include<bits/stdc++.h>
#include<string>
using namespace std;
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);set<int> q;string s, s2;cin >> s;while(true){for(int i = 1; i < s.size() - 1; i++){if(s[i] == s[i - 1] && s[i] != s[i + 1]){q.insert(i);q.insert(i + 1);}if(s[i] == s[i + 1] && s[i] != s[i - 1]){q.insert(i);q.insert(i - 1);}}if(q.empty()){cout << s;break;}s2.clear();for(int i = 0; i < s.size(); i++){if(q.find(i) == q.end()) s2 += s[i];}s = s2;q.clear();if(s.size() == 0){cout << "EMPTY";break;}}return 0;
}

選自藍橋杯消除游戲

數據交換

第一種交換方式

tmp = a;

a = b;

b = tmp;

第二種交換方式

a = a ^ b;

b = a ^ b;

a = a ^ b;

第三種交換方式

swap(a,b);

注意:swap是一個庫函數,并且c++才能使用!!!

感覺有思路,但又不確定怎么寫

這種情況,我們先不管那些細節問題,如變量聲明,循環條件是什么,先寫出一個大概,將大概的代碼寫完后再去補細節

幾個經典bug

使用各語言對應的輸出語句進行輸出某個過程中的數據

案例1

因為少寫了什么代碼導致最后的結果與預期不同

就比如這題,預期答案是58,但是實際輸出是2,那么如何找到這個問題呢

在sum += judge(……)這行代碼的后面,編寫輸出語句,再次執行程序,我們可以發現它還是只輸出了2

那么還是給大一的小伙伴說一個知識點:如果是正常的for?按理說是不會只輸出一個sum的值(在無特殊情況下),為了讓這個bug出現得更明顯一點,我們還可以在small[x][y]那段代碼后面加輸出語句,如下圖

那么就可以確定這里是有bug的,那么接下來回到我們一開始的代碼原理圖上

結合原理圖和自己所編寫的代碼我們可以發現,兩層for循環只走了了一次(這里是靠走讀代碼的技巧,怎么走讀下面會講)原因是少了'=',那么問題來了,為啥會出現二呢?因為下面還有個judge函數,并且我們傳過去的參數有數組名和a,b兩個變量,進入到judge函數后又會根據我們所寫的執行,所以才會出現2

案例2

在本地能通過,在云端通不過

那么出現這種情況,我們可以優先考慮是否出現數組越界的問題,如上圖就很明顯,條件限制的是i,但對i + 1卻沒有限制導致出現一個越界,此外i從0開始,導致i - 1越界,因此使得本地能通過,而云端通不過。

案例3

如圖所示,這個bug在devc++中表示命名沖突,解決方法:更改一下a和b這兩個變量的名字即可

題型模板

動態規劃

題型特征

背包問題,路徑問題,打家劫舍問題

題型模板

狀態表示

狀態轉移方程

初始化

填表順序

返回值

前綴和

兩個模板

模板一:將動態規劃的模板走一遍(即預處理數組),使用數組

模板二:當前項 + 前一項

詳情可以前往鏈接:藍橋真題講解-CSDN博客進行觀看

差分

核心模板

數組名[l]++;

數組名[r + 1]--;

思路模板:出現差分的地方必有前綴和

?詳情可以前往鏈接:藍橋真題講解-CSDN博客進行觀看

以上模板優先看

其余模板

滑動窗口

題型特征

能用雙指針,就可以考慮是否能用滑動窗口

題型模板

Left = 0, right = 0;

進窗口

判斷

出窗口

👆? 👇//表示循環

更新結果

二分查找

必記點

當然博主的水平有限,不過對于c組小伙伴們來說基本也就差不多了,如果博主的文章能對其他組的小伙伴有所幫助,博主也是倍感榮幸。

當然賽前這幾天這篇文章也還會再更新點內容

最后祝大家旗開得勝!!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/77368.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/77368.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/77368.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

TCP重傳率高與傳輸延遲問題

目錄標題 排查步驟&#xff1a;TCP重傳率高與傳輸延遲問題v1.0通過 rate(node_netstat_Tcp_RetransSegs[3m]) 排查 TCP 重傳問題的步驟1. **指標含義與初步分析**2. **關聯指標排查**3. **定位具體問題源**4. **解決方案**5. **驗證與監控** v2.0一、基礎檢查二、網絡層分析三、…

【LeetCode 熱題100】73:矩陣置零(詳細解析)(Go語言版)

&#x1f680; 力扣熱題 73&#xff1a;矩陣置零&#xff08;詳解 多種解法&#xff09; &#x1f4cc; 題目描述 給定一個 m x n 的整數矩陣 matrix&#xff0c;如果一個元素為 0&#xff0c;則將其所在行和列的所有元素都設為 0。請你 原地 使用常量空間解決。 &#x1f3a…

組播網絡構建:IGMP、PIM 原理及應用實踐

IP組播基礎 組播基本架構 組播IP地址 一個組播IP地址并不是表示具體的某臺主機&#xff0c;而是一組主機的集合&#xff0c;主機聲明加入某組播組即標識自己需要接收目的地址為該組播地址的數據IP組播常見模型分為ASM模型和SSM模型ASM&#xff1a;成員接收任意源組播數據&…

Unity UGUI使用手冊

概述 UGUI(Unity Graphical User Interface) :Unity 圖像用戶界面 在游戲開發中&#xff0c;我們經常需要搭建一些圖形用戶界面。Unity內置的UGUI可以幫助開發者可視化地拼接界面&#xff0c;提高開發效率。UGUI提供不同樣式的UI組件&#xff0c;并且封裝了對應功能的API&am…

Python web程序在服務器上面部署詳細步驟

在服務器上部署Python web程序通常涉及以下步驟&#xff1a; 設置服務器環境: 選擇合適的服務器&#xff0c;如AWS EC2、DigitalOcean Droplet等。配置服務器操作系統&#xff0c;例如Ubuntu、CentOS等。安裝必要的軟件&#xff0c;如Python、pip、git等。 準備Python web程序…

條件生成對抗網絡(Conditional GAN, CGAN)原理及實現(pytorch版)

CGAN 原理及實現 一、CGAN 原理1.1 基本概念1.2 與傳統GAN的區別1.3 目標函數1.4 損失函數1.5 條件信息的融合方式1.6 與其他GAN變體的對比1.7 CGAN的應用1.8 改進與變體 二、CGAN 實現2.1 導包2.2 數據加載和處理2.3 構建生成器2.4 構建判別器2.5 訓練和保存模型2.6 繪制訓練損…

Go語言比較遞歸和循環執行效率

一、概念 1.遞歸 遞歸是指一個函數在其定義中直接或間接調用自身的編程方法 。簡單來說&#xff0c;就是函數自己調用自己。遞歸主要用于將復雜的問題分解為較小的、相同類型的子問題&#xff0c;通過不斷縮小問題的規模&#xff0c;直到遇到一個最簡單、最基礎的情況&#x…

keepalived高可用介紹

keepalived 是 Linux 一個輕量級的高可用解決方案&#xff0c;提供了心跳檢測和資源接管、檢測集群中的系統服務&#xff0c;在集群節點間轉移共享IP 地址的所有者等。 工作原理 keepalived 通過 VRRP&#xff08;virtual router redundancy protocol&#xff09;虛擬路由冗余…

數據分享:汽車測評數據

說明&#xff1a;如需數據可以直接到文章最后關注獲取。 1.數據背景 Car Evaluation汽車測評數據集是一個經典的機器學習數據集&#xff0c;最初由 Marko Bohanec 和 Blaz Zupan 創建&#xff0c;并在 1997 年發表于論文 "Classifier learning from examples: Common …

NLP簡介及其發展歷史

自然語言處理&#xff08;Natural Language Processing&#xff0c;簡稱NLP&#xff09;是人工智能和計算機科學領域中的一個重要分支&#xff0c;致力于實現人與計算機之間自然、高效的語言交流。本文將介紹NLP的基本概念以及其發展歷史。 一、什么是自然語言處理&#xff1f…

HOOPS Visualize:跨平臺、高性能的三維圖形渲染技術解析

在當今數字化時代&#xff0c;三維可視化技術已成為眾多行業的核心競爭力。HOOPS Visualize作為一款功能強大的三維圖形渲染引擎&#xff0c;憑借其卓越的渲染能力、跨平臺支持、豐富的交互功能、高度定制化以及快速部署等特性&#xff0c;為開發人員提供了構建高質量、高性能3…

藍橋杯速成刷題清單(上)

一、1.排序 - 藍橋云課 &#xff08;快速排序&#xff09;算法代碼&#xff1a; #include <bits/stdc.h> using namespace std; const int N 5e5 10; int a[N];int main() {int n;cin >> n;for (int i 0; i < n; i) {cin >> a[i];}sort(a, a n);for …

Java面試黃金寶典44

1. 查看進程的運行堆棧信息命令 gstack gstack 是 Linux 系統下用于查看指定進程運行時堆棧信息的工具。當程序出現崩潰、死鎖或者性能瓶頸等問題時,借助 gstack 可以查看進程中各個線程的調用棧,從而輔助開發人員定位問題。 定義 gstack 本質上是一個封裝了底層 ptrace 系統…

嵌入式硬件篇---TOF陀螺儀SPI液晶屏

文章目錄 前言1. TOF傳感器&#xff08;Time of Flight&#xff09;原理STM32使用方法硬件連接SDASCLVCC\GND 軟件配置初始化I2C外設庫函數驅動&#xff1a;讀取數據 2. 陀螺儀&#xff08;如MPU6050&#xff09;原理STM32使用方法硬件連接SDA/SCLINTVCC/GND 軟件配置初始化I2C…

【scikit-learn基礎】--『預處理』之 正則化

數據的預處理是數據分析&#xff0c;或者機器學習訓練前的重要步驟。 通過數據預處理&#xff0c;可以 提高數據質量&#xff0c;處理數據的缺失值、異常值和重復值等問題&#xff0c;增加數據的準確性和可靠性整合不同數據&#xff0c;數據的來源和結構可能多種多樣&#xff…

LeetCode Hot100 刷題筆記(2)—— 子串、普通數組、矩陣

目錄 前言 一、子串 1. 和為 K 的子數組 2. 滑動窗口最大值 3. 最小覆蓋子串 二、普通數組 4. 最大子數組和 5. 合并區間 6. 輪轉數組 7. 除自身以外數組的乘積 8. 缺失的第一個正數 三、矩陣 9. 矩陣置零 10. 螺旋矩陣 11. 旋轉圖像 12. 搜索二維矩陣 II 前言 一、子串&#…

【Git 常用操作指令指南】

一、初始化與配置 1. 設置全局賬戶信息 git config --global user.name "用戶名" # 設置全局用戶名 git config --global user.email "郵箱" # 設置全局郵箱 --global 表示全局生效&#xff0c;若需針對單個倉庫配置&#xff0c;可省略該參數 2.…

教培行業創建自己品牌的重要意義——教育培訓小程序

在競爭激烈的教培行業&#xff0c;創建自身品牌意義重大。 擁有獨特品牌能顯著提升機構競爭力與辨識度。如今教培市場同質化嚴重&#xff0c;一個亮眼的品牌小程序可使機構從眾多競爭者中脫穎而出&#xff0c;讓學員和家長快速識別并記住。 品牌小程序有助于增強信任度和口碑。…

Docker 介紹 · 安裝詳細教程

為什么選擇 Docker&#xff1f; ? 環境一致性 – 告別“在我機器上能跑”的問題&#xff0c;確保開發、測試、生產環境一致。 ? 高效輕量 – 秒級啟動&#xff0c;資源占用遠低于傳統虛擬機。 ? 跨平臺支持 – 可在任何支持 Docker 的環境中運行&#xff0c;包括云服務器、…

GitHub 上開源一個小項目的完整指南

GitHub 上開源一個小項目的完整指南 &#x1f680; 第一步&#xff1a;準備你的項目 在開源之前&#xff0c;確保項目是可用且有一定結構的&#xff1a; ? 最低要求 項目文件清晰、結構合理&#xff08;比如&#xff1a;src/、README.md、LICENSE&#xff09;項目能在本地正…