聽說這裡要有一個副標題
主要是我怕我忘記講
# PRESENTING CODE
# PRESENTING CODE
# PRESENTING CODE
# PRESENTING CODE
cd C:\Usersgcc duck.c -o duck誒 gcc 你拿著 duck.c 去把該做的做一做
最後產生能跑的東西後,命名為 duck 存在原地
# PRESENTING CODE
gcc duck.c -o duck誒 gcc 你拿著 duck.c 去把該做的做一做
最後產生能跑的東西後,命名為 duck 存在原地
./duck# PRESENTING CODE
| Flag | 意義 |
|---|---|
| -Wall -Wextra -Wpedantic | 編譯過程中,把遇到且的 warning 印出來 |
| -I | 告訴系統你的標頭檔可能放在哪裡 |
| -g | 程式錯誤時,精確輸出來自哪一份檔案的哪一行 |
| -O3 | 套用最極致的效能優化,有機會導致不穩定 |
| -std=c17 | 套用 C17 這個 ISO 語言標準 |
是不用特別去記,而且這明顯超範圍了
2026.09.10
# PRESENTING CODE
# PRESENTING CODE
#include <stdio.h>
int main (){
double a, b;
int z;
scanf("%lf %lf %d", &a, &b, &z);
printf("%.*f\n", z, a*b);
}# PRESENTING CODE
#include <stdio.h>
int main (){
double a, b;
scanf("%lf %lf", &a, &b);
printf("%.4f", a*b);
}# PRESENTING CODE
#include <stdio.h>
int main(){
int a, b, c, d, output;
scanf("%d.%d %d.%d", &a, &b , &c , &d);
output = (100*a + b) * (100*c + d); // 全部轉成整數處理
printf("%d.%04d\n", output/10000, output%10000);
}2026.11.04
# PRESENTING CODE
# PRESENTING CODE
# PRESENTING CODE
# include <bits/stdc++.h> // 這幾乎包含所有你寫題會用到的東西# include <vector>/*
* vector <型態> 命名;
* vector <型態> 命名(初始大小, 初始值);
* vector <型態> 命名 = {...};
*/
vector <int> vec_1; // 宣告但不初始化
vector <int> vec_2(10007, -1); // 初始大小 10007,所有人都是 -1
vector <int> vec_3 = {1, 2, 3, 4, 5};# PRESENTING CODE
/*
* {vector 名稱}.assign(初始大小, 初始值)
*/
vector <int> vec;
int main (){
int N; cin >> N;
vec.assign(N+7, -1);
}# PRESENTING CODE
/*
* {vector 名稱}.push_back({值})
*/
vector <int> vec = {1, 2, 3, 4, 5};
int main (){
vec.push_back(6);
for (int i = 0; i < vec.size(); i++) cout << vec[i] << ' ';
// 1 2 3 4 5 6
}# PRESENTING CODE
/*
* {vector 名稱}.pop_back()
*/
vector <int> vec = {1, 2, 3, 4, 5};
int main (){
vec.pop_back();
for (int i = 0; i < vec.size(); i++) cout << vec[i] << ' ';
// 1 2 3 4
}# PRESENTING CODE
/*
* .size():得到一個數字,獲取 vector 的大小,裡面沒有元素就是 0
* .empty():得到一個 bool,代表 vector 是否為空
* .clear():清空 vector 內所有元素
* */
vector <int> vec(57, 30); // 一個 57 格的 vector,初始值 37
cout << vec.size() << '\n'; // 57
if (vec.empty()) cout << "Nothing inside\n";
else cout << "Elements in vector";
vec.clear();
cout << vec.size() << '\n'; // 0
/*
* Python:
* for it in vec:
*
* C++:
* for (auto it:vec){}
*/
vector <int> vec(57);
for (int i = 0; i < vec.size(); i++) vec[i] = i;
for (auto to:vec) cout << to << ' '; // 0 1 2 3 ... 55 56# PRESENTING CODE
1
2
3
4
5
6
7
# PRESENTING CODE
1
2
3
4
5
6
7
# PRESENTING CODE
1
2
3
4
5
6
7
graph[1] = {2, 3, 4}
graph[2] = {1, 3}
graph[3] = {1, 2}
graph[4] = {1, 6}
graph[5] = {7}
graph[6] = {4}
graph[7] = {5}vector <vector <int>> graph;
int main (){
int N, M; cin >> N >> M;
graph.resize(N+7); // graph 是 N+7 個空的 vector <int>
while (M--){ // 開始讀邊
int a, b; cin >> a >> b; // 假設 a 與 b 之間有邊
graph[a].push_back(b);
graph[b].push_back(a);
}
}# PRESENTING CODE
4
1
3
2
5
7
6
假設我們現在的位置是 x
下一步我們走訪
與 x 相連,且編號最小的點
# PRESENTING CODE
假設我們現在的位置是 x
下一步我們走訪
與 x 相連,且編號最小的點
Starts from 1
1
3
2
5
7
6
4
# PRESENTING CODE
假設我們現在的位置是 x
下一步我們走訪
與 x 相連,且編號最小的點
Pos:1, Next:2
1
3
2
5
7
6
4
# PRESENTING CODE
假設我們現在的位置是 x
下一步我們走訪
與 x 相連,且編號最小的點
Pos:2, Next:6
1
3
2
5
7
6
4
# PRESENTING CODE
假設我們現在的位置是 x
下一步我們走訪
與 x 相連,且編號最小的點
Pos:6, Next:None
1
3
2
5
7
6
4
# PRESENTING CODE
假設我們現在的位置是 x
下一步我們走訪
與 x 相連,且編號最小的點
Pos:2, Next:None
1
3
2
5
7
6
4
# PRESENTING CODE
假設我們現在的位置是 x
下一步我們走訪
與 x 相連,且編號最小的點
Pos:1, Next:4
1
3
2
5
7
6
4
# PRESENTING CODE
假設我們現在的位置是 x
下一步我們走訪
與 x 相連,且編號最小的點
Pos:4, Next:3
1
3
2
5
7
6
4
# PRESENTING CODE
假設我們現在的位置是 x
下一步我們走訪
與 x 相連,且編號最小的點
Pos:3, Next:5
1
3
2
5
7
6
4
# PRESENTING CODE
假設我們現在的位置是 x
下一步我們走訪
與 x 相連,且編號最小的點
Pos:5, Next:7
1
3
2
5
7
6
4
# PRESENTING CODE
假設我們現在的位置是 x
下一步我們走訪
與 x 相連,且編號最小的點
Pos:7, Next:None
1
3
2
5
7
6
4
# PRESENTING CODE
假設我們現在的位置是 x
下一步我們走訪
與 x 相連,且編號最小的點
Pos:5, Next:None
1
3
2
5
7
6
4
# PRESENTING CODE
假設我們現在的位置是 x
下一步我們走訪
與 x 相連,且編號最小的點
Pos:3, Next:None
1
3
2
5
7
6
4
# PRESENTING CODE
假設我們現在的位置是 x
下一步我們走訪
與 x 相連,且編號最小的點
Pos:4, Next:None
1
3
2
5
7
6
4
# PRESENTING CODE
假設我們現在的位置是 x
下一步我們走訪
與 x 相連,且編號最小的點
Pos:1, Next:None
1
3
2
5
7
6
4
# PRESENTING CODE
vector <vector <int>> graph; // 假裝它蓋好了
vector <bool> visited;
void dfs (int pos){
visited[pos] = true;
for (auto it:graph[pos]){
if (!visited[it]) dfs(it);
}
}
int main (){
int N, M; cin >> N >> M;
graph.resize(N+7); // 我習慣陣列故意開大一點
visited.assign(N+7, false); // 一開始所有人都沒被走過
while (M--){ // 存圖
int a, b; cin >> a >> b;
graph[a].push_back(b);
graph[b].push_back(a);
}
dfs(1); // 從編號 1 開始盡可能往最遠的地方走
}# PRESENTING CODE
給你 N 個貓咪吐司的座標,以及一個距離 r
當任兩個貓咪吐司的距離 <= r 時,貓咪吐司就會坍縮成黑洞
問最後場上剩幾個未坍縮的貓咪吐司、幾個黑洞
# PRESENTING CODE
# include <bits/stdc++.h>
vector <pair <int, int>> graph;
int main (){
int N, R; cin >> N >> R;
vec.assign(N, {0, 0});
for (int i = 0; i < graph.size(); i++) cin >> graph[i].first >> graph[i].second;
}pair <int, int> p = {2, 3} // 你可以直接用 {} 來初始化一個 pair# PRESENTING CODE
int N, R;
vector <pair <int, int>> vec; // 每個貓咪吐司的位置
vector <bool> survive; // 紀錄每個貓咪吐司是否健在
int sc, hb;
int main (){
cin >> N >> R;
vec.assign(N, {0, 0});
survive.assign(N+17, true);
sc = 0; // 剩下的貓咪吐司
hb = 0; // 黑洞數量
for (auto &to:vec) cin >> to.F >> to.S; // &to 表示我是用參考下去跑,所以我可以直接修改 to
}
# PRESENTING CODE
# PRESENTING CODE
bool dfs(int index, bool ret){
survive[index] = false; // 先把自己設為 false,避免等等 DFS 出去有人走回來
int x = vec[index].F, y = vec[index].S;
for (int i = 0; i < N; i++){
int nx = vec[i].F, ny = vec[i].S;
if ((x-nx)*(x-nx) + (y-ny)*(y-ny) <= R*R && survive[i]){
dfs(i, false); // 只要跑到這行,表示你走出去了
ret = false;
}
}
if (ret) survive[index] = true; // 如果都沒走出去,再改回來
return ret;
}# PRESENTING CODE
#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef pair <int, int> pii;
#define F first
#define S second
#define pb push_back
int N, R;
vector <pii> vec; // 每個貓咪吐司的位置
vector <bool> survive; // 紀錄每個貓咪吐司是否健在
int sc, hb;
bool dfs(int index, bool ret){
// printf("f, index = %d, ret = %d\n", index, ret);
survive[index] = false;
int x = vec[index].F, y = vec[index].S;
for (int i = 0; i < N; i++){
int nx = vec[i].F, ny = vec[i].S;
if ((x-nx)*(x-nx) + (y-ny)*(y-ny) <= R*R && survive[i]){
dfs(i, false);
ret = false;
}
}
if (ret) survive[index] = true;
return ret;
}
int main (){
cin >> N >> R;
vec.assign(N, {0, 0});
survive.assign(N+17, true);
sc = 0; // 剩下的貓咪吐司
hb = 0; // 黑洞數量
for (auto &to:vec) cin >> to.F >> to.S;
for (int i = 0; i < N; i++){
if (survive[i]){
if (dfs(i, true)){
// printf("%d survive\n", i);
sc++;
}
else {
// printf("%d blackhole\n", i);
hb++;
}
}
}
cout << sc << ' ' << hb << '\n';
}
# PRESENTING CODE
| 2 | 3 | 5 | 7 | 11 | 14 | 17 | 23 | 27 | 31 |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 34 | 35 | 41 | 43 | 44 | 46 | 52 | 53 | 56 | 57 |
|---|---|---|---|---|---|---|---|---|---|
| 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
val
index
# PRESENTING CODE
| 2 | 3 | 5 | 7 | 11 | 14 | 17 | 23 | 27 | 31 |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 34 | 35 | 41 | 43 | 44 | 46 | 52 | 53 | 56 | 57 |
|---|---|---|---|---|---|---|---|---|---|
| 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
val
index
# PRESENTING CODE
vector <int> vec = {...};
int l = 0, r = 20;
int tar; cin >> tar; // 假設這是要找的數字
// 假設未探索區間是 [l, r)
while (l < r){
int mid = (l+r) / 2;
if (tar <= vec[mid]) r = mid;
else if (tar > vec[mid]) l = mid+1;
}
cout << l << '\n';# PRESENTING CODE
vector <int> vec = {...};
int l = 0, r = 20;
int tar; cin >> tar; // 假設這是要找的數字
// 假設我們要找的區間是 [l, r)
while (l < r){
int mid = (l+r) / 2;
if (tar <= vec[mid]) r = mid;
else if (tar > vec[mid]) l = mid+1;
}
cout << l << '\n';如果 r 是答案,那麼 l = mid+1 = r 迴圈終止
# PRESENTING CODE
int lb (vector <int> vec, int t){
int l = 0, r = vec.size();
while (l < r){
int mid = (l+r) / 2;
if (t <= vec[mid]) r = mid;
else l = mid+1;
}
return l;
}int ub (vector <int> vec, int t){
int l = 0, r = vec.size();
while (l < r){
int mid = (l+r) / 2;
if (t < vec[mid]) r = mid;
else l = mid+1;
}
return l;
}# PRESENTING CODE
給你一個數列 a,裡面有很多數字 \(a_1, a_2, ..., a_n\),數字會重複
之後有 Q 筆詢問,每筆訊問輸入一個整數
求這個整數在數列 a 中出現過幾次
# PRESENTING CODE
1 1 2 2 2 4 5 6 7 7 7 7 7 7 8 12 12 23 45 57 74
聰明的你發現了 upper_bound(7) 不就是紅色那個
聰明的你發現了 lower_bound(7) 不就是藍色那個
int N; cin >> N;
vec.assign(N, 0);
for (auto &to:vec) cin >> to;
sort(vec.begin(), vec.end());
int Q; cin >> Q;
while (Q--){
int t; cin >> t;
cout << ub(t)-lb(t) << '\n';
}# PRESENTING CODE
/*
* 假設 vector 名稱叫 vec,自行代入
* sort(vec.begin(), vec.end(), 排序方式)
* 排序方式你可以填 less<int>() 表示小到大,或 greater<int>() 代表大到小
* 又或是你自己寫的 comparison function,回傳值是 bool 就好
*/
sort(vec.begin(), vec.end()); // 不寫排序方式的話預設就是小到大# PRESENTING CODE
#include <bits/stdc++.h>
using namespace std;
#define icisc ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
#define F first
#define S second
#define pb push_back
vector <int> vec;
int lb (int t){
int l = 0, r = vec.size();
while (l < r){
int mid = (l+r) / 2;
if (t <= vec[mid]) r = mid;
else l = mid+1;
}
return l;
}
int ub (int t){
int l = 0, r = vec.size();
while (l < r){
int mid = (l+r) / 2;
if (t < vec[mid]) r = mid;
else l = mid+1;
}
return l;
}
void solve (){
int N; cin >> N;
vec.assign(N, 0);
for (auto &to:vec) cin >> to;
sort(vec.begin(), vec.end());
int Q; cin >> Q;
while (Q--){
int t; cin >> t;
cout << ub(t)-lb(t) << '\n';
}
}
int main (){
icisc
bool codeforces = false;
int N = 1;
if (codeforces) cin >> N;
while (N--) solve();
}# PRESENTING CODE
#include <bits/stdc++.h>
using namespace std;
#define icisc ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
#define F first
#define S second
#define pb push_back
map <int, int> d;
void solve (){
int N; cin >> N;
while (N--){
int tmp; cin >> tmp;
d[tmp]++;
}
int Q; cin >> Q;
while (Q--){
int tmp; cin >> tmp;
cout << d[tmp] << '\n';
}
}
int main (){
icisc
bool codeforces = false;
int N = 1;
if (codeforces) cin >> N;
while (N--) solve();
}# PRESENTING CODE