網站頁面導覽
歡迎來到 4yu Blog 🔗 可自由探索整個網頁,也可依照以下導覽列表閱讀 導覽 🔗 點擊前往 自我介紹 About me 點擊前往 第一篇文章 Hello, World. DSA 系列 🔗 (撰寫中 待發布…) 複雜度分析 Complexity Analysis 點擊前往 C++ STL 全 點擊前往 排序演算法 Sort Algorithm (C++) 點擊前往 C++ 進階資料結構實作 (撰寫中 待發布…) Greedy (撰寫中 待發布…) DP (撰寫中 待發布…) 圖論 (撰寫中 待發布…) 數論 AI/ML & Quantum 系列 🔗 (撰寫中 待發布…) AI/ML 理論知識與實作筆記 點擊前往 訓練神經網路計算過程 (撰寫中 待發布…) 量子運算 IBM Qiskit 心得系列 🔗 點擊前往 資訊學科能力競賽 心得 點擊前往 NFIRC 南附資研社 - 從零開始的社團經營之路 點擊前往 SCIST Camp 2024 籌辦心得 (撰寫中 待發布…) SCIST Camp 2025 籌辦心得 (撰寫中 待發布…) FunAI Winter Camp 2024 & 2025 參與心得 (撰寫中 待發布…) SCIST S5 總召心得 (撰寫中 待發布…) 演算法競賽出題心得 網頁架構 🔗 本網頁組成架構 主頁 Home 網頁封面 側邊資訊欄 文章推薦 文章 Posts 此網頁所有文章 標籤 Tags 所有文章所提及的標籤、關鍵字 分類 Categories 針對特定主題分類文章 音樂 分享我的網易雲歌單 連結 Link 聯繫資訊 友站 NFIRC SCIST Discord Server 學習資源 程式平台 軟體工具 Blogs 相關技術 關於 自我介紹 經歷 感謝閱覽此網頁! 🔗
C++ STL 全
Intro 🔗 學完 C++ 基礎語法之後,接著就該進入資料結構的世界了! 本篇筆記要介紹的是 C++ STL,彙整了許多基礎資料結構的概念與用法,文章內容較多,部分內容為收集資料擷取後並經過修改整理而成,文章內容若有任何錯誤或需要補充的地方都歡迎使用右側聊天室傳送訊息給我,我將會儘速修改,謝謝 先備知識 🔗 標準模板庫(Standard Template Library),簡稱 STL 為 C++ 內建的函式庫 為了應對各種資料型態,因此採用 模板 template 來實作,分為六大部分: 容器 Containers 演算法 Algotithm 迭代器 Iterator 適配器 Adaptor 仿函數 Function object 空間配置器 allocator 本篇文章內容著重於前四大部分 符號解釋 🔗 對於本篇文章中各種符號的解釋 C:某種容器(container) T:某種資料型態(type) S:長度(size) i:索引(index) val:值(value) K:鍵值(key) it:迭代器(iterator) 迭代器(iterator) 🔗 C++ STL 為每個容器提供一個成員型別:迭代器 Iterator,我們可以用 指標 pointer 的概念來理解迭代器(實際上,指標算是一種迭代器) 假設現在有個迭代器 it,如果要存取 it 所指向的內容,那就是在前面加上星號 *it,與指標相同 以下有迭代器的三種分類: 隨機存取迭代器:這種迭代器能夠和整數的加減法,往 後移 x 項、往 前移 x 項 皆可,也可以 遞增 (++) 和 遞減 (−−),可以把指標當作這種迭代器 雙向迭代器:只能做 遞增 (++) 和 遞減 (−−) 的運算,也就是 後一項 和 前一項 單向迭代器:只能做 遞增 (++) 的運算,也就是 後一項 利用迭代器可遍歷容器中的元素,分為 iterator 和 reverse_iterator(反向迭代器) 可用 C.begin(), C.end() 取得容器的 起始 和 尾端 而 reverse_iterator 則是 C.rbegin(), C.rend() iterator 示意圖 (圖片來源) 資料結構的詳細介紹 🔗 本篇介紹以下 C++ STL 內建基礎資料結構: 動態陣列 vecto...
排序演算法 Sort Algorithm (C++)
現今社會,資料量不斷地增加,因此排序演算法的重要性日益提升,從大數據排序到網路搜尋引擎排序,排序演算法在我們日常生活中扮演了重要的角色。 本文將介紹10種常見的排序演算法,來和我一起學習掌握排序演算法的原理及實作過程吧! 本文架構 🔗 線性排序演算法種類 🔗 氣泡排序 Bubble Sort 選擇排序 Selection Sort 插入排序 Insertion Sort 快速排序 Quick Sort 合併排序 Merge Sort 堆排序 Heap Sort 希爾排序 Shell Sort 計數排序 Counting Sort 桶排序 Bucket Sort 基數排序 Radix Sort 每個排序演算法的內容 🔗 排序介紹 動畫演示 實作步驟 C++程式碼 注意事項 時間複雜度 總結 測試模板 🔗 下文介紹的 10 種排序演算法都會附上寫好的函式 這裡提供測試模版 在區域中加上各種排序演算法函式即可運作 可 EOF 輸入 123456789101112131415161718192021222324252627#include <bits/stdc++.h>using namespace std;vector<int> v;// 可以將底下的某個排序演算法函式複製起來放進來這個區域// ----------------------------------------------// ----------------------------------------------int main(void){ int n; while (cin >> n) v.emplace_back(n); // 這行放入某個排序演算法函式名稱用來呼叫 例如:BubbleSort(); // ------------------------------------------ // ------------------------------------------ for (auto &i : v) cout << v[i] << " "; return 0;} 排序演算法的詳細介紹 🔗 氣泡排序...
訓練神經網路計算過程
這是一個具有一層隱藏層的神經網路: 假設 🔗 輸入層有 3 個節點,輸入 X 中有 3 筆數據,其標籤為 Y: X=[1202−32−1−13],Y=[12−3] X = \begin{bmatrix} 1 & 2 & 0 \\ 2 & -3 & 2 \\ -1 & -1 & 3 \\ \end{bmatrix}, Y = \begin{bmatrix} 1 \\ 2 \\ -3 \\ \end{bmatrix} W1=[−10−111−1] W_1 = \begin{bmatrix} -1 & 0 \\ -1 & 1 \\ 1 & -1 \\ \end{bmatrix} 隱藏層有 2 個節點,隱藏層權重矩陣為 W1W_1,線性組合 Z=XW1Z=XW_1, 經過激活函數 σ\sigma 後的值為 KK,即 K=σ(Z)K = \sigma(Z) 另激活函數 σ\sigma 為 ReluRelu 函數, σ(x)=Relu(x)=max(x,0)\sigma(x)=Relu(x)=max(x,0) 輸出層有 1 個節點,其權重矩陣為 W2W_2,線性輸出 O=KW2O=KW_2 W2=[1−2] W_2 = \begin{bmatrix} 1 \\ -2 \\ \end{bmatrix} 將輸出值與標籤去計算損失,令損失為 JJ,假設使用加總型式的最小平方損失 J=∑(12(O−Y)2)J = \sum (\frac{1}{2}(O-Y)^2) 此時,已知輸出層梯度: Gout=∂J∂O=O−YG_{out} = \frac{\partial J}{\partial O}=O-Y 隱藏層梯度: G2=∂J∂W2=∂J∂O∂O∂W...
南九校資訊社 x 成大資工 x SCIST 2024 聯合寒訓 - 資得其樂 籌辦心得
寒訓詳細資訊 🔗 引言 🔗 在 2023/11/25 這次的寒訓總召 茶碗蒸 私訊我問說要不要一起辦寒訓,但其實我們南附資研在 2023/11/13 幹部線上開會時就有討論到說寒假要辦營隊,本來沒想說要辦那麼大規模的寒訓,那時的規劃主要是開放給校內的所有學生和老師,大概會舉辦講座提供給校內對資訊領域有興趣的人,且主題訂為資訊領域的多元課程。 後來思考過後決定接下本次寒訓副召,一開始的召群有南女的總召 茶碗蒸、一中的副召 KCC 還有我,加上 Fishhh、Eason 和 Curious 這三位 SCIST S4 的總召們協助,還有小白的加入也讓我們日後籌備更順利。 籌備階段 🔗 我們是先開了線上會議,確認好活動目的與受眾,排好 Deadline 後才開始籌備,一開始是要先招募工作人員,因為有茶碗蒸這個 SCIST 文書在,所以各種表單很快就做好了,而且他也有之前辦茶會迎新的經驗,所以初期還挺順利的,也在一開始就把各校的邀請訊息發出去了,最後是找到了 9 間學校聯合主辦,而 SCIST 則是掛協辦,提供我們講師助教等課程上的資源,我們也開始著手撰寫計劃書、排時間表、預估經費、詢問場地租借…等。在計劃書撰寫上感謝小白幫了很大的忙,而其他的事情也很幸運有上一屆寒訓的 PJ、Koying…等人的努力,有留下文檔提供我們很多資訊可作參考,讓我們在初期不容易迷失方向,對我們幫助很大。 在短短的一週內,就收到了個主辦校報名的工作人員 35 人左右,其中我從南附資研中就拉了 10 幾個人來當行政,加上 SCIST 的講師及助教,最後行政組達到了 50 人左右。 我們接著開放學員報名,一開始報名狀況其實不是很好,我們很怕無法收到預估的學員人數,所以加強了各校的宣傳,我也以擔任小編的經驗到各大社團和營隊網站上刊登廣告,後來發現報名期間只有第一週和最後一週報名人數才會增加的現象… 在這要感謝成功大學資工系的 Colten 幫忙處理成大場地以及接線讓成大資工系與本次寒訓合作,讓推廣曝光提升了很多,也提供了我們成大超級棒的階梯教室和電腦教室場地給寒訓使用,也要特別感謝副召 KCC 不斷地與南一中接洽,才能有超大的群英堂提供我們舉辦晚會活動。 過了學員報名期限,很開心的我們收到了超過 100 多位學生的報名,接下來就是繁瑣篩選學員環節,繁瑣是因為要閱讀大量的試算表內容,根據...
NFIRC 南附資研社 - 從零開始的社團經營之路
創社計畫 🔗 創社歷程、成果、心得與反思 🔗 撰寫中 … 🔗 第一屆年報 🔗 點擊回到導覽頁面 🔗
C++ 實作資料結構
本篇文章撰寫中 請稍等內容完整後再閱讀… 🔗 Intro 🔗 此篇文章使用 C++ 來實作各種從基礎到進階的資料結構 可先閱讀這篇關於 C++ 內建基礎資料結構的 C++ STL 大全 後再回來繼續 STL 中的基礎資料結構只需學會如何應用即可,而此篇的資料結構則是要自行實作 內容一樣很多,若有編寫錯誤之處請使用右側聊天室回報給我,將盡快修改 實作資料結構 🔗 本篇包含以下資料結構的實作 前綴和 & 差分數列 稀疏表 Sparse Table 樹狀數組 BIT 線段樹 Segment Tree 樹堆 Treap 鏈結串列 Linked-list 並查集 DSU rope pbds 前綴和 & 差分數列 🔗 本篇開頭以此做為基礎,與其稱呼它們為資料結構,我更傾向將它們視為一種能有效的降低時間複雜度的重要預處理技巧 前綴和(Prefix Sum)可以簡單理解為 數列由前往後累加的值 建出前綴和數列 🔗 123456789101112131415#include <bits/stdc++.h>using namespace std;signed main() { int n; cin >> n; vector<int> v(n), p(n+1); p[0] = 0; for(int i=0;i<n;++i) { cin >> v[i]; sum[i+1] = v[i] + p[i]; } for(auto i:p) cout << i << ' ';} 注意:前綴和數列會比原數列多了一項,記得初始化第 0 項為 0 Input 🔗 1251 2 3 4 5 Output 🔗 10 1 3 6 10 15 快速查詢區間和 🔗 要查詢數列區間 [l,r][l,r] 的和,原始方法是用迴圈慢慢加 12int sum = 0;for(int i=l;i<=r;++i) sum += p[i]; 有了前綴和後,每次查詢使用一次減法 第 r+1 項 - 第 l 項 即可快速取得區間和,直接將時間複雜度從 O(n)O(n)...
資訊學科能力競賽 參賽心得
競賽資訊 🔗 名稱:112 學年度學科能力競賽 複賽 資訊科 賽區:國教署負責區第四區(台南) 時間:2023/11/2 地點:台南女中 比賽人數:50 人(資訊科) 獲獎人數:1 ~ 5 名進全國賽 再大約取前三分之一的人獲得佳作 當天詳細時程: 前言 🔗 這是我第一次比資訊學科能力競賽 高一時不知道在幹嘛 那時不太關注資訊比賽 南大附中好像也沒什麼人比過資訊能競 所以我跟 @Yudong 不用校內初選就直接進複賽了 南區去年只有選 3 名進全國賽 今年因為去年的南一中有人全國賽一等二等獎 所以新增了 2 個 總共有 5 個名額 賽前猜測沒意外應該都是南一中的 我們第一次比賽就遇到主辦方各種出錯 這個留到文章最後再說 此篇文章就是寫我參加此競賽的過程、解題程式碼、心得、和檢討 如果你也是資訊選手或打競程的 那這篇其實可以滑掉不用看了 對你來說可能是一篇廢文 沒什麼參考價值 上午場 🔗 報到抽籤後 發現只有我們學校沒有領隊… 到了我們學校的座位 被排在最後一排 我跟 Yudong 在猜這座位配置是不是依照學校的得獎次數排的哈哈 我在活動中心其實滿緊張的 雖然前幾個禮拜也有參加比賽:CodeWars、金盾獎 但都是抱持著輕鬆愉快的心情比的 可能是因為這場能競對我來說算是滿重要的比賽 整個狀態有點緊繃 到了電腦教室測試時 主辦就開始出現錯誤了 我先跳過這部分最後再說 來寫一下解題過程 p1 🔗 第 1 題明顯滿難的 我看到就先跳過了 p2 🔗 題意 12有各不同的分數種類: 50 25 10 5 1 求總和為 N 分的組合數 Input 12321126 Output 12413 解題想法 1233 層 for 迴圈枚舉每種分數各取幾次因為取完 前幾種分數 剩餘的都可以用 1 分來湊看了數字範圍 確認此做法不會超時後開始寫 Code AC Code 123456789101112131415161718192021222324252627#include <bits/stdc++.h>using namespace std;#define ShiYu ios::sync_with_stdio(0),cin.tie(0)#define FOR(i,n) for(int i=0; i<=n; ++i)signed...
Hello, World.
歡迎來到士育的部落格! 🔗 網頁介紹 🔗 此網頁使用了 Hexo 靜態網頁框架 部署在 Github pages 上 我使用的 Theme 主題是 Butterfly 創建日期為 2022/12/01(國一)版本使用 4.5.1(已在 2025/07/06 升級為 5.4.1) 網頁用途 🔗 這裡是我的程式筆記網頁 內容包括我所學到的 資料結構 演算法 不會有程式語言基礎語法 因為網路上資源多且詳細 筆記中的內容或許會有小錯誤或不完整 所以我會不斷的更新修改 我也會不定期的發佈 程式解題 知識筆記 還有各種心得紀錄 … 有興趣的人可以參閱其他文章或到上方其他頁面看看 如果你對文章有任何想法或建議 歡迎在文章下方評論區登入 Github 帳號 留下你的看法 或是可以直接使用右下角的 線上聊天室功能 傳訊息給我 我會盡快回覆你的訊息 若你想開始學程式 請到上方 link 連結 的頁面 我有放許多資源可以提供你學習 提供的資源涵蓋 各種程式語言的基礎語法 以及各種程式相關平台 工具… 以及各個程式社群的 Discord 伺服器 希望能對你有所幫助 ! 本網站網址 🔗 1https://4yu.dev 點擊回到導覽頁面 🔗