Competitive Programming
2019 - Fall
李旺陽、日月卦長、盧振華
TA Room : 資電 124 (助教室)
競技程式有關比賽報名、帶隊、規劃比賽
培訓教學 etc
scanf / sscanf / stringstream
有時會需要讀入不是用空白換行隔開的資料
2019/09/22
12:35
Hint 1. 當作字串讀取後,再利用字串的技巧取出資料
Hint 2. 利用 scanf 來在輸入時處理
Input 12:00 9:00 8:10 0:00
Output 0.000 90.000 175.000
Input 4
01/01/2007
12/02/2007
09/06/2007
28/02/1871
Output Case #1: Invalid birth date
Case #2: Check brith date
DP - 1
在某一個國家流通了 \(a_1,a_2,a_3,\cdots,a_n\) 共 \(n\) 種面額的貨幣
保證有 1 元的面額
總是先嘗試最大面額的硬幣
有例外嗎?
圖論
點 Vertex
邊 Edge ( 點之間的關聯 )
的學問
| 英文(n.) | 中譯(參考某知名書籍) |
|---|---|
| walk | 道路 |
| path | 路徑 |
| trail | 行跡 |
| tour | 迴路 |
給定一張地圖
如果希望一個區域與相鄰的區域有不同的顏色
那最少要幾種顏色?
Note.
假設地圖是一個平面,無飛地
如何討論怎麼著色?
一個區塊有很多形狀
不同形狀能銜接的鄰居都不一樣...
枚舉所有的形狀 ?
著色問題
一個區塊雖然有很多形狀
但答案比起區塊的形狀
討論區塊可能的相連方法比較重要
著色問題
一個區塊雖然有很多形狀
但答案比起區塊的形狀
討論區塊可能的相連方法比較重要
點 Vertex
邊 Edge ( 點之間的關聯 )
的學問
點 Vertex
邊 Edge ( 點之間的關聯 )
的學問
點 Vertex
邊 Edge ( 點之間的關聯 )
的學問
點 Vertex
邊 Edge ( 點之間的關聯 )
的學問
點著色問題
每一個點都要有顏色
相鄰的點顏色要不一樣
至少要幾個顏色才能滿足條件
vector<int> V[4];
//V[i] 儲存 點 i 的鄰居有誰
V[0] = {1,2,3};
1
2
3
0
點著色問題
檢查一張圖(平面的)是否可以用 \(K\) 種顏色塗色,使得相鄰的點顏色不同
\(K = 1\)
有邊就不行
\(K = 2\)
easy algo.
\(K = 3\)
NP Problem
\(K = 4\)
四色定理
1996. NEIL ROBERTSON \(O(v^2)\)
檢查一張圖是否可以用 \(2\) 種顏色塗色,使得相鄰的點顏色不同
檢查一張圖是否可以用 \(2\) 種顏色塗色,使得相鄰的點顏色不同
決定好一個點的顏色之後,他鄰居的顏色就被固定了
檢查一張圖是否可以用 \(2\) 種顏色塗色,使得相鄰的點顏色不同
1. 決定一個點的顏色
檢查一張圖是否可以用 \(2\) 種顏色塗色,使得相鄰的點顏色不同
1. 決定一個點的顏色
2. 檢查這一個點的鄰居
如果還沒有顏色,就幫他塗
檢查一張圖是否可以用 \(2\) 種顏色塗色,使得相鄰的點顏色不同
1. 決定一個點的顏色
2. 檢查這一個點的鄰居
如果還沒有顏色,就幫他塗
如果有顏色,就檢查是否合法
檢查一張圖是否可以用 \(2\) 種顏色塗色,使得相鄰的點顏色不同
1. 決定一個點的顏色
2. 檢查這一個點的鄰居
如果還沒有顏色,就幫他塗
如果有顏色,就檢查是否合法
3. 改以鄰居為出發點 (遞迴2.)
檢查一張圖是否可以用 \(2\) 種顏色塗色,使得相鄰的點顏色不同
1. 決定一個點的顏色
2. 檢查這一個點的鄰居
如果還沒有顏色,就幫他塗
如果有顏色,就檢查是否合法
3. 改以鄰居為出發點 (遞迴2.)
檢查一張圖是否可以用 \(2\) 種顏色塗色,使得相鄰的點顏色不同
1. 決定一個點的顏色
2. 檢查這一個點的鄰居
如果還沒有顏色,就幫他塗
如果有顏色,就檢查是否合法
3. 改以鄰居為出發點 (遞迴2.)
檢查一張圖是否可以用 \(2\) 種顏色塗色,使得相鄰的點顏色不同
1. 決定一個點的顏色
2. 檢查這一個點的鄰居
如果還沒有顏色,就幫他塗
如果有顏色,就檢查是否合法
3. 改以鄰居為出發點 (遞迴2.)
檢查一張圖是否可以用 \(2\) 種顏色塗色,使得相鄰的點顏色不同
1. 決定一個點的顏色
2. 檢查這一個點的鄰居
如果還沒有顏色,就幫他塗
如果有顏色,就檢查是否合法
3. 改以鄰居為出發點 (遞迴2.)
檢查一張圖是否可以用 \(2\) 種顏色塗色,使得相鄰的點顏色不同
1. 決定一個點的顏色
2. 檢查這一個點的鄰居
如果還沒有顏色,就幫他塗
如果有顏色,就檢查是否合法
3. 改以鄰居為出發點 (遞迴2.)