【C++】競程筆記(前綴和、差分 習題練習)
【C++】競程筆記(前綴和、差分 習題練習) Zerojudge e346. 區間和練習:https://zerojudge.tw/ShowProblem?problemid=e346 :::info 內容: 給定一個長度為 $n$ 的整數序列 $A$ ,請回答 $q$ 筆詢問。每筆詢問會問其中一段連續區間的總和為何。 輸入說明: 輸入的第一行有一個整數 $n$ ( $1 \leq n \leq 200000$ ),代表 $A$ 序列的長度。 第二行有 $n$ 個整數以空白分隔,依序表示 $A$ 序列中的數字,其中數字的絕對值不會超過 $10^{9}$ 。 第三行有一個整數 $q$ ( $1 \leq q \leq 200000$ ),代表詢問的數量。 接下來有 $q$ 行,每行有兩個個數字 $l, r$ ,表示詢問為序列 $A$ 中第 $l$ 個數字到第 $r$ 個數字的總和。 輸出說明: 輸出 $q$ 行,每行有一個整數表示該次詢問的答案。 ::: 1234567891011121314151617181920212223242526#include <b...
【C++】競程筆記(前綴和、差分)
【C++】競程筆記(前綴和、差分) 程式碼範例參考:NTUCPC Guide,此筆記僅為個人學習用途。 前綴和(Prefix-sum) 要快速計算某區間的和,會用到前綴和。 Image Source:https://osgoodgunawan.medium.com/prefix-sum-80d531154b95 依照上圖,A 為原始序列,P 為前綴和序列,則前綴和用程式寫就是: 完整一點: 1234vector<int> P(n + 1, 0); // P[0] = 0for (int i = 0; i < n; ++i) { P[i + 1] = P[i] + A[i];} 我們可以利用前綴和計算區間 $[L, R]$ 的總和,可於 $O(1)$ 時間內完成,但在準備前綴和序列的時間複雜度是 $O(n)$ 。 12345678910111213141516171819202122#include <iostream>#include <vector>using namespace std;int main()...
【C++】競程筆記(遞迴)
【C++】競程筆記(遞迴) 程式碼範例參考:NTUCPC Guide,此筆記僅為個人學習用途。 遞迴(Recursion) 遞迴是函式的定義方式,這個函式透過呼叫自身來解決一個問題,並依賴於一個或多個終止條件來避免無限呼叫。 簡單來說,遞迴就是一個函式呼叫他自己本身,使得程式碼不斷地被執行,直到達成某個終止條件才會停止。 如: 123int func(int a){ func(a);} 設計遞迴程式有兩個重點: 設定終止條件:避免進入無窮遞迴。 遞迴規則:將原問題簡化並以相同邏輯遞迴呼叫自身。 應用 Fibonacci Number (Leetcode):https://leetcode.com/problems/fibonacci-number/ 123456789class Solution {public: int fib(int n) { if (n == 0 || n == 1){ return n; } return fib...
【C++】競程筆記(實作技巧:Range-based for loop、Structured binding)
【C++】競程筆記(實作技巧:Range-based for loop、Structured binding) 程式碼範例參考:NTUCPC Guide,此筆記僅為個人學習用途。 Range-based for loop 這個可以提供更簡潔的遍歷寫法,如下例子: 1234vector <int> v = {1,2,3,4,5,6,7,8,9};for (int i : v){ cout << i << endl;} 若要對 i 進行修改,需要加上 &,如:int& i。 字串陷阱 12345678910#include <bits/stdc++.h>using namespace std;int main(){ for (char c : "abc"){ cout << c << "*\n"; } return 0;} 輸出: 1234...
【APCS】2025年1月實作題 C++ 解題筆記(前兩題)
【APCS】2025年1月實作題 C++ 解題筆記(前兩題) 本篇筆記紀錄個人解題過程,內容僅供參考。 等紅綠燈:https://zerojudge.tw/ShowProblem?problemid=q181 tag : 資料處理 1234567891011121314151617181920#include <bits/stdc++.h>using namespace std;int main(){ int a, b; cin >> a >> b; int n; cin >> n; int sum; for (int i = 0; i < n; i++){ int wait_time = 0; cin >> wait_time; if (wait_time % (a+b) >= a){ sum += abs((wait_time % (a+b) - b) - a); ...
PixAI 一個免費的二次元 AI 生圖網站,使用教學與模型推薦
PixAI 一個免費的二次元 AI 生圖網站,使用教學與模型推薦 哈囉大家好我是 LukeTseng,今天來介紹一個免費的生圖網站叫 PixAI,他的命名神似知名的插畫交流網站 Pixiv(眾多老濕機們的平台,讚讚der),也當然,他在二次元生圖的部分十分優秀,接下來就讓我帶各位來看這個網站。 為什麼要用 PixAI? AI 生圖雲端運算,不用本地端執行生圖程式 免費 功能齊全且細項多雜 能產二次元香圖,讚讚 PixAI 註冊 先前往:https://pixai.art/zh 這個網站現在支援中文了,之前是不支援的,如果你的介面仍顯示英文的話,可如下圖進行操作。 找到以下紅框處的圖標,就可以更改語言: 若要進行登入或註冊就按下登入: 這邊提供了多種的登入方式,若是第一次進這網站沒有註冊的話,就按下面的「使用者註冊」: 註冊完後,會跳出以下訊息告知你領取每日積分: 每日登入會拿到 10000 積分,若積分沒有使用完畢的話,會自動累積至先前獲得的點數,不用擔心會被吃掉。 另外 PixAI 也有提供手機 App,針對安卓及蘋果平台都有支援: Google Play(Andr...
對 ChatGPT 生成的內容不滿意嗎?有可能是你下的提示詞太差了!超好用的提示詞優化網站推薦給您!
對 ChatGPT 生成的內容不滿意嗎?有可能是你下的提示詞太差了!超好用的提示詞優化網站推薦給您! 哈囉大家好,我是 LukeTseng,身為生成式 AI 的愛用者,經常對於怎麼下提示詞感到萬分困擾,今天就來推薦各位一個網站,能讓你丟給 ChatGPT 的提示詞更加優化,重點是他還是免費的! PromptPerfect 網站 首先我們來到這個網站:https://promptperfect.jina.ai/ 如果是第一次來的話,可按下上面欄位最右邊的紫色按鈕叫做 Try for free 進行註冊。 來到這個頁面後,將 By continuing, you agree to the Terms and Conditions and Privacy Policy from Jina AI. 這個選項打勾,才能繼續註冊。 另外 Click to subscribe to our newsletter. 的部分就看個人要不要收他們公司的電子報了。 這邊就依照個人意願選擇何種方式註冊了。 如何將介面調整為中文 第一次來到這個介面後,你可能會看到一堆英文字: 不用擔心,點擊下圖左...
【C++ 筆記】函數多載 / 運算子多載 - part 24
【C++ 筆記】函數多載 / 運算子多載 - part 24 很感謝你點進來這篇文章。 你好,我並不是什麼 C++、程式語言的專家,所以本文若有些錯誤麻煩請各位鞭大力一點,我極需各位的指正及指導!!本系列文章的性質主要以詼諧的口吻,一派輕鬆的態度自學程式語言,如果你喜歡,麻煩留言說聲文章讚讚吧! 本篇將詳細說明上篇所提及的兩個多型觀念:函數多載與運算子多載,探討其可多載與不可多載情形,並附上詳細範例。 函數多載(Function Overloading) 在 C++ 中,函數多載就是可以讓你有同名函數存在,但是他們的參數數量可以不一樣。而它是編譯期多型(靜態多型,只有編譯完成時才會進行)的一種形式,函數會根據傳遞給它的不同參數執行不同的工作。此為物件導向程式設計的特性,可提高程式的可讀性。 而函數多載其實不僅限於使用類別(class)內的成員函數,一般的函數也可使用,在 GeeksForGeeks 上用 add 函數舉了一個例子。 123int add2(int a, int b) { return a + b;} 123int add3(int a, ...
【C++ 筆記】多型(Polymorphism) - part 23
【C++ 筆記】多型(Polymorphism) - part 23 很感謝你點進來這篇文章。 你好,我並不是什麼 C++、程式語言的專家,所以本文若有些錯誤麻煩請各位鞭大力一點,我極需各位的指正及指導!!本系列文章的性質主要以詼諧的口吻,一派輕鬆的態度自學程式語言,如果你喜歡,麻煩留言說聲文章讚讚吧! OOP 四大特性 再次強調 OOP(物件導向程式設計)的四大特性: 封裝(Encapsulation)(已學) 繼承(Inheritance)(已學) 多型(Polymorphism) 抽象(Abstraction) 多型(Polymorphism) 多型也稱為多態。 多型簡單來說,就是「同一個動作,因物件不同而產生不同結果」。想像我們現在有一個遙控器(介面),上面有一個「開啟」按鈕。當按下這個按鈕去控制不同設備時,會發生不同的事: 對電視按「開啟」,電視會顯示畫面。 對電風扇按「開啟」,風扇會開始轉動。 對電燈按「開啟」,燈會亮起來。 同一個「開啟」指令(介面),因為控制的物件(電視、風扇、電燈)不同,產生不同的行為,這就是多型。 在程式設計中,多型可讓我們用統一的方式...
【C++】競程筆記(資料結構:linked-list)
【C++】競程筆記(資料結構:linked-list) 程式碼範例參考:NTUCPC Guide,此筆記僅為個人學習用途。 鏈結串列(linked-list) 一般的陣列會是在連續的記憶體空間中儲存資料,而鏈結串列雖與陣列同為線性資料結構,但他可以將資料儲存在一個 不連續(non-contiguous) 的記憶體空間中。 linked-list 的定義為數個節點(nodes)的集合,而一個節點就由兩個成員所組成,也就是值跟前後的指標(value and previous / next pointer)。 linked-list 可以有三種型態: 單向鏈結串列(Singly Linked List) 雙向鏈結串列(Doubly Linked List) 循環鏈結串列(Circular Linked List) 那首先最簡單的當然就是單向的 linked-list 了,要如何簡單的理解 linked-list 呢?就如同上課傳紙條一樣,假設有一排座位,某個同學要傳紙條到最前面的同學,勢必要點他前面同學的肩膀叫他接力下去,就有點像下圖那樣: 圖:作者繪製 Head 就是這個鏈結串...
【C++】競程筆記(資料結構:Stack、Queue)
【C++】競程筆記(資料結構:Stack、Queue) 程式碼範例參考:NTUCPC Guide,此筆記僅為個人學習用途。 資料結構 這啥?就是: 在電腦科學中,資料結構(data structure)是電腦中儲存、組織資料的方式。 From:Wikipedia 資料結構有兩種操作: 修改操作 查詢操作 修改就是可以在一個資料結構,像是陣列裡面新增或移除值。 查詢就是可以存取一個資料結構的元素,如 a[0]。 常見的資料結構有 stack(堆疊)、queue(佇列)、array(陣列)、vector(C++ STL 的動態陣列)、linked-list(鏈結串列)等等。 vector 的部分可以參照我先前寫的:https://hackmd.io/@LukeTseng/H1ZqX9RHkl 迭代器(iterator) 迭代器就是一個能枚舉資料結構的資料的物件。 然後迭代器跟指標很像,但實際上不太一樣,他是一種設計模式,用來逐個存取容器(如 array、set等)內的元素,而不需要顯示容器的內部結構。 用一句話概括就是:迭代器是一種提供通用介面來遍歷容器中元素的物件。 ...
【Win 11/10】電腦會卡?會Lag?推薦兩款軟體給你!
【Win 11/10】電腦會卡?會Lag?推薦兩款免費軟體給你! 各位好,我是 LukeTseng,今天為各位推薦兩款免費軟體,可自動幫你清理暫存檔,並且進一步為你的電腦進行優化!廢話不多說,馬上來介紹第一款軟體。 Wise Disk Cleaner 官方網站:https://www.wisecleaner.com/wise-disk-cleaner.html 免安裝包下載(非官方):https://www.azofreeware.com/p/wise-disk-cleaner.html 這款軟體真的非常好用,不用自己手動 win + R 開啟 Temp 資料夾,然後把暫存全刪掉。 軟體下載完後呈現以下的介面,我個人建議使用預設值就好,其他是否要勾選就看個人。 至於有些人下載完後可能會顯示英文介面,以下就教你如何更改為中文: 至於下面的 Appearance 就是外觀的意思,可以更改為 Light(淺色)、Dark(深色主題)。 另外這軟體還有其他功能,像是進階清理、系統瘦身、硬碟整理等,我覺得都蠻不錯用的,推薦給各位。 還有說一下,系統瘦身的部分: 建議選擇前面兩項就...
【個人筆記】C++ ZeroJudge 基礎題庫解題(純練習) - part 4
【個人筆記】C++ ZeroJudge 基礎題庫解題(純練習) - part 4 a022.:https://zerojudge.tw/ShowProblem?problemid=a022 難度:★☆☆☆☆ 1234567891011121314151617181920#include <bits/stdc++.h>using namespace std;int main(){ bool re = true; int count; string input; cin >> input; count = input.size(); char result[count]; strcpy(result, input.c_str()); for (int i = 0; i < floor(count / 2); i++){ if (result[i] != result[count-1-i]){ re = false; }...
【HTML 筆記】超連結(Hyperlinks)【part 5】
【HTML 筆記】超連結(Hyperlinks)【part 5】 Hello Guys,我是 LukeTseng,自從大學放榜後,我就積極不間斷的學習資訊相關的東西,持續地茁壯自己,主要最大的成分還是興趣與熱愛這個學科來支撐的~總之,廢話不多說,本文主要透過網路上的各大免費平台自學,並且整理成一篇筆記以供自己閱讀的同時,也能促進個人的學習軌跡。 HTML 超連結(連結) HTML 用 <a> 設定超文本連結。 基本語法如下: <a href="URL">link</a> <a> 標籤:定義一個超連結(anchor)。是 HTML 中用來建立可點擊連結的主要標籤。 href 屬性:指定目標 URL,當點擊連結時,瀏覽器會導覽至此 URL。 一個超連結有以下預設的形式: 一個從來都未存取過的連結顯示為「藍色」字體並有底線,如下圖。 存取過的連結顯示為「紫色」並有底線,如下圖。 當點擊連結時,連結顯示為「紅色」並有底線。(就是閃一下紅色的,然後又變回去藍色) :::info 若將這些超連結設定 ...
【HTML 筆記】文本格式化標籤、特殊字元【part 4】
【HTML 筆記】文本格式化標籤、特殊字元【part 4】 Hello Guys,我是 LukeTseng,自從大學放榜後,我就積極不間斷的學習資訊相關的東西,持續地茁壯自己,主要最大的成分還是興趣與熱愛這個學科來支撐的~總之,廢話不多說,本文主要透過網路上的各大免費平台自學,並且整理成一篇筆記以供自己閱讀的同時,也能促進個人的學習軌跡。 標題(Heading) 這邊主要稍微講一下標籤對 SEO 優化的影響,建議是大標題就使用 h1 字體,次要則使用 h2,最後才是 h3。總之就是要掌握跟檢查這個結構,可以讓搜尋引擎更容易抓取索引,去找到文章。 若是一個符合 SEO 規範的文章,h1 標籤只能有一個,h2 可以有無數多個,h3 是為了讓文章結構更加明確才加的,最多可以到 h6。 然後補充以下兩個前面章節未講到的標籤: 標籤 說明 <hr> 定義一個水平線 <!--...--> 定義一行註解 範例: 1<h1>HTML 水平線~</h1> <hr> 加上註解以後: 12<!-- 這是 HTM...






