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

一、1.排序 - 藍橋云課

(快速排序)算法代碼:

#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 (int i = 0; i < n; i++) {cout << a[i] << " ";}cout << endl;for (int i = n - 1; i >= 0; i--) {cout << a[i] << " ";}cout << endl;/*reverse(a,a+n);for (int i = 0; i < n; i++) {cout << a[i] << " ";}*/return 0;
}

二、2.走迷宮 - 藍橋云課

(BFS)算法代碼:

#include <bits/stdc++.h>
using namespace std;int n, m; // 地圖大小
int start_x, start_y, end_x, end_y; // 起始點和終點(1-based)
vector<vector<int>> mp; // 地圖(0-based)
vector<vector<int>> path_len; // 記錄路徑長度
typedef pair<int, int> PII;// 四個方向偏移量
const int dx[] = {-1, 1, 0, 0};
const int dy[] = {0, 0, 1, -1};int main() {cin >> n >> m;mp.resize(n, vector<int>(m));path_len.resize(n, vector<int>(m, -1)); // 初始化為-1// 輸入地圖(按行優先順序,1-based轉換為0-based)for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {cin >> mp[i][j];}}// 輸入起始點和目標點坐標(1-based)cin >> start_x >> start_y >> end_x >> end_y;// 轉換為0-basedstart_x--; start_y--; end_x--; end_y--;queue<PII> q;q.push({start_x, start_y});path_len[start_x][start_y] = 0; // 起點算作1個格子while (!q.empty()) {PII tmp = q.front();q.pop();// 遍歷四個方向for (int i = 0; i < 4; i++) {int nx = tmp.first + dx[i];int ny = tmp.second + dy[i];// 檢查邊界if (nx < 0 || ny < 0 || nx >= n || ny >= m) {continue;}// 檢查障礙物和是否已訪問if (mp[nx][ny] == 0 || path_len[nx][ny] != -1) {continue;}path_len[nx][ny] = path_len[tmp.first][tmp.second] + 1;q.push({nx, ny});}}// 輸出結果(若無法到達則輸出-1)cout << path_len[end_x][end_y] << endl;return 0;
}

三、3.小明的背包1 - 藍橋云課

算法代碼:

貪心、但只能通過18.2%:

#include <iostream>
#include <algorithm>
using namespace std;struct Item {int w, v;
};// 定義結構體的比較規則
bool cmp(const Item& a, const Item& b) {if (a.v == b.v) {return a.w < b.w;}return a.v > b.v;
}int main() {int n, V;  // 注意這里改為大寫的V表示背包容量cin >> n >> V;  // 必須先讀取n和V的值Item items[105];for (int i = 0; i < n; i++) {cin >> items[i].w >> items[i].v;}// 按價值從大到小來排列sort(items, items + n, cmp);// 從價值最大的物品放入int sum = 0;int remaining = V;  // 剩余容量for (int i = 0; i < n; i++) {if (remaining >= items[i].w) {sum += items[i].v;remaining -= items[i].w;}}cout << sum << endl;return 0;
}

?動態規劃:

#include<bits/stdc++.h>
using namespace std;const int MAXN = 110;
const int MAXV = 1010;int N, V;
int w[MAXN], v[MAXN];
int f[MAXN][MAXV];int main() {cin >> N >> V;for (int i = 1; i <= N; i++) {cin >> w[i] >> v[i];}memset(f, 0, sizeof(f));for (int i = 1; i <= N; i++) {for (int j = 0; j <= V; j++) {f[i][j] = f[i - 1][j];//不放if (j >= w[i])// 背包還有空間{f[i][j] = max(f[i][j], f[i - 1][j - w[i]] + v[i]);}}}cout << f[N][V] << endl;return 0;
}

四、4.藍橋公園 - 藍橋云課

(Floyd)算法代碼:?

#include<bits/stdc++.h>
using namespace std;
using ll =long long;
const int N=500;
ll inf=1e18;
ll n,m,q;
ll d[N][N];
int main()
{cin>>n>>m>>q;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){d[i][j]=inf;}}for(int i=1;i<=n;i++)d[i][i]=0;while(m--){ll u,v,w;cin>>u>>v>>w;d[u][v]=min(d[u][v],w);d[v][u]=min(d[v][u],w); }for(int k=1;k<=n;k++){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){d[i][j]=min(d[i][j],d[i][k]+d[k][j]);}}}while(q--){int st,ed;cin>>st>>ed;cout<<(d[st][ed]>=inf ? -1 : d[st][ed])<<endl;}return 0;
}

五、5.回文判定 - 藍橋云課

(字符串、模擬、雙指針)算法代碼:?

#include <bits/stdc++.h>
using namespace std;
int main()
{string s;cin>>s;int left=0;int right=s.size()-1;while(left<right){if(s[left]!=s[right]){cout<<"N"<<endl;return 0;}left++;right--;}cout<<"Y"<<endl;return 0;
}

六、6.小明的彩燈 - 藍橋云課

(差分)算法代碼:?

#include <iostream>
#include <vector>
#define int long long 
using namespace std;signed main() {int n, q;cin >> n >> q;vector<int> a(n);for (int i = 0; i < n; i++) {cin >> a[i];}vector<int> d(n + 1, 0);  // 差分數組,長度為 n+1for (int i = 0; i < q; i++) {int l, r, x;cin >> l >> r >> x;d[l] += x;if (r < n) {d[r + 1] -= x;}}// 對差分數組進行前綴和操作,即可得到每個彩燈的最終亮度for (int i = 1; i <= n; i++) {d[i] += d[i - 1];a[i - 1] += d[i];if (a[i - 1] < 0) {a[i - 1] = 0;}}for (int i = 0; i < n; i++) {cout << a[i] << " ";}cout << endl;return 0;
}

七、7.解立方根 - 藍橋云課

(二分)算法代碼:(只能25%,這個題有問題)?

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;const double eps = 1e-8;double cube_root(double x) {double l = 0, r = x;while (r - l > eps) {double mid = (l + r) / 2;if (mid * mid * mid < x) {l = mid;} else {r = mid;}}return l;
}int main() {int T;cin >> T;while (T--) {int x;cin >> x;double ans = cube_root(x);printf("%.3f\n", ans);}return 0;
}

八、10.藍橋騎士 - 藍橋云課

(LIS)算法代碼:?

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;int main() {int n;cin >> n;vector<int> a(n);for (int i = 0; i < n; i++) {cin >> a[i];}vector<int> S;for (int i = 0; i < n; i++) {if (S.empty() || a[i] > S.back()) {S.push_back(a[i]);} else {auto it = lower_bound(S.begin(), S.end(), a[i]);*it = a[i];}}cout << S.size() << endl;return 0;
}

九、8.藍橋幼兒園 - 藍橋云課

(并查集)算法代碼:

#include <iostream>
#include <vector>using namespace std;const int MAXN = 2e5 + 5;int fa[MAXN];// 并查集的查找操作
int find(int x) {if (fa[x] != x) {fa[x] = find(fa[x]);}return fa[x];
}int main() {int n, m;cin >> n >> m;// 初始化每個人的父親為自己for (int i = 1; i <= n; ++i) {fa[i] = i;}// 處理操作while (m--) {int op, x, y;cin >> op >> x >> y;if (op == 1) {int fx = find(x), fy = find(y);// 將兩個人所在的連通分量合并if (fx != fy) {fa[fx] = fy;}} else {int fx = find(x), fy = find(y);// 判斷兩個人是否在同一個連通分量中if (fx == fy) {cout << "YES" << endl;} else {cout << "NO" << endl;}}}return 0;
}

十、9.藍橋王國 - 藍橋云課

(Dijkstra)算法代碼:?

#include <iostream>
#include <vector>
#include <queue>
using namespace std;
const long long INF = 0x3f3f3f3f3f3f3f3fLL;
const int MAXN = 3e5 + 2;struct Edge {int from, to;long long weight;Edge(int u, int v, long long w) : from(u), to(v), weight(w) {}
};vector<Edge> edges[MAXN];struct Node {int id;long long dis;Node(int i, long long d) : id(i), dis(d) {}bool operator<(const Node& other) const {return dis > other.dis;}
};int n, m;
long long dist[MAXN];void dijkstra() {int start = 1;bool visited[MAXN] = {false};for (int i = 1; i <= n; i++) {dist[i] = INF;visited[i] = false;}dist[start] = 0;priority_queue<Node> pq;pq.push(Node(start, dist[start]));while (!pq.empty()) {Node u = pq.top();pq.pop();if (visited[u.id])continue;visited[u.id] = true;for (int i = 0; i < edges[u.id].size(); i++) {Edge e = edges[u.id][i];if (visited[e.to])continue;if (dist[e.to] > e.weight + u.dis) {dist[e.to] = e.weight + u.dis;pq.push(Node(e.to, dist[e.to]));}}}
}int main() {cin >> n >> m;for (int i = 1; i <= n; i++) {edges[i].clear();}while (m--) {int u, v, w;cin >> u >> v >> w;edges[u].push_back(Edge(u, v, w));}dijkstra();for (int i = 1; i <= n; i++) {if (dist[i] >= INF) {cout << "-1" << " ";} else {cout << dist[i] << " ";}}return 0;
}

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

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

相關文章

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;項目能在本地正…

React 第三十節 使用 useState 和 useEffect Hook實現購物車

不使用 redux 實現 購物車案例 使用 React 自帶的 useState 和 useEffect Hook 即可實現購物車 export default function ShoppingCar() {// 要結算的商品 總數 以及總價const [totalNum, setTotalNum] useState(0)const [totalPerice, setTotalPerice] useState(0)// 商品…

藍橋杯第十一屆省賽C++B組真題解析

藍橋杯第十一屆省賽CB組真題解析 八、回文日期https://www.lanqiao.cn/problems/348/learning 方法一&#xff1a;暴力枚舉所有的日期&#xff0c;記錄有多少個回文日期。 #include <bits/stdc.h> using namespace std; int month[13]{0,31,28,31,30,31,30,31,31,30,31…

Python和MicroPython的解釋器區別

Python和MicroPython的解釋器不是同一個&#xff0c;它們在設計目標、實現方式和運行環境上都有顯著的區別。以下是它們的主要區別&#xff1a; 1. 底層實現 Python解釋器&#xff08;CPython&#xff09;&#xff1a; Python的標準解釋器是CPython&#xff08;C語言實現的Pyt…

Cython加密多層目錄中的Python腳本方案

近期有一個VueJavaDocker項目中需要加密Python腳本的需求&#xff0c;調研后決定采用Cython。 使用Cython編譯為二進制 步驟&#xff1a; 安裝Cython&#xff1a;pip install cython創建setup.py&#xff1a; from distutils.core import setup from Cython.Build import c…

力扣DAY40-45 | 熱100 | 二叉樹:直徑、層次遍歷、有序數組->二叉搜索樹、驗證二叉搜索樹、二叉搜索樹中第K小的元素、右視圖

前言 簡單、中等 √ 好久沒更了&#xff0c;感覺二叉樹來回就那些。有點變懶要警醒&#xff0c;不能止步于笨方法&#xff01;&#xff01; 二叉樹的直徑 我的題解 遍歷每個節點&#xff0c;左節點最大深度右節點最大深度當前節點當前節點為中心的直徑。如果左節點深度更大…

頭歌數據庫【數據庫概論】第10-11章 故障恢復與并發控制

第1關&#xff1a;數據庫恢復技術 1、事務的&#xff08; A&#xff09;特性要求事務必須被視為一個不可分割的最小工作單元 A、原子性 B、一致性 C、隔離性 D、持久性 2、事務的&#xff08;C &#xff09;特性要求一個事務在執行時&#xff0c;不會受到其他事務的影響。 A、原…

windows下,cursor連接MCP服務器

1.下載并安裝node 安裝后&#xff0c;在cmd命令框中&#xff0c;輸入命令node -v可以打印版本號&#xff0c;證明安裝完成 2.下載MCP服務器項目 在MCP服務器找到對應項目&#xff0c;這里以server-sequential-thinking為例子 在本地cmd命令窗口&#xff0c;使用下面命令下載…

前端配置husky,commit-lint導致的git提交錯誤:git xx@0.0.0 lint:lint-staged

前端配置husky&#xff0c;commit-lint導致的git提交錯誤&#xff1a;git xx0.0.0 lint:lint-staged git commit -m "xxx"時出現以下報錯&#xff0c;可能是前端配置husky&#xff0c;commit-lint的原因 //報錯信息 git xx0.0.0 lint:lint-staged首先要知道出現這個錯…

各種場景的ARP攻擊描述筆記(超詳細)

1、ARP報文限速 上一章我們說過ARP報文也是需要上送CPU進行處理的協議報文,如果設備對收到的大量ARP報文全部進行處理,可能導致CPU負荷過重而無法處理其他業務。因此,在處理之前需要對ARP報文進行限速,以保護CPU資源。 1.根據源MAC地址或源IP地址進行ARP限速 當設備檢測到某一…

Django 創建CSV文件

Django使用Python內置的CSV庫來創建動態的CSV&#xff08;逗號分隔值&#xff09;文件。我們可以在項目的視圖文件中使用這個庫。 讓我們來看一個例子&#xff0c;這里我們有一個Django項目&#xff0c;我們正在實現這個功能。創建一個視圖函數 getfile() 。 Django CSV例子 …

HTTPS為何仍有安全漏洞?解析加密協議下的攻擊面

本文深度剖析HTTPS協議在傳輸層、證書體系、配置管理三個維度的安全盲區&#xff0c;揭示SSL/TLS加密掩蓋下的11類攻擊路徑。基于Equifax、SolarWinds等重大事件的技術復盤&#xff0c;提供包含自動化證書巡檢、動態協議升級、加密流量威脅檢測的立體防御方案。 HTTPS不等于絕…

MyBatis 動態 SQL 使用詳解

&#x1f31f; 一、什么是動態 SQL&#xff1f; 動態 SQL 是指根據傳入參數&#xff0c;動態拼接生成 SQL 語句&#xff0c;不需要寫多個 SQL 方法。MyBatis 提供了 <if>、<choose>、<foreach>、<where> 等標簽來實現這類操作 ? 二、動態 SQL 的優點…