競技程式設計

Competitive Programming

2019 - Fall

Guild line

  • 上課時間:19:00 ~ 20:00
  • 上課地點:台達館,看哪間教室亮著
  • 對象:想加強程式設計能力的同學
  • 功課:有題單,自行完成

助教資訊

李旺陽、日月卦長、盧振華

 

TA Room : 資電 124 (助教室)

 

競技程式有關比賽報名、帶隊、規劃比賽

培訓教學 etc

 

 

重要行程

  • 上學期
    • NCPC 初賽
    • NCPC 決賽
    • ICPC 台灣站
    • ICPC 海外站
    • 上學期校內體驗賽 (期末)
  • 下學期
    • ICPC WF
    • 台清交程式競賽
    • 校內程式個人賽
    • 兩岸清華

For beginner

  • 多練習
    • 不僅是解出題目,還要改進自己的程式風格
       
  • 多查資料
    • 演算法筆記 etc.
    • 不要輕易相信別人的答案,要驗證
       
  • 多問 TA、學長、同學

Special Format Input

scanf / sscanf / stringstream

Special Format Input

有時會需要讀入不是用空白換行隔開的資料

2019/09/22

12:35

Hint 1. 當作字串讀取後,再利用字串的技巧取出資料

Hint 2. 利用 scanf 來在輸入時處理

UVa 579 Clockhands

Input

12:00
9:00
8:10
0:00
Output

0.000
90.000
175.000

UVa 11219 How old are you

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

互斥集

二分搜尋法

Coin Change

DP - 1

Coin Change

在某一個國家流通了 \(a_1,a_2,a_3,\cdots,a_n\) 共 \(n\) 種面額的貨幣

保證有 1 元的面額

  • 求 付出 \(k\) 元不找零最少要用幾個硬幣
  • 求 付出 \(k\) 元不找零有幾種方法

Cashier’s Algorithm

總是先嘗試最大面額的硬幣

有例外嗎?

Graph

圖論

This is Image

This is Garph

七橋問題

Graph

  • 一張圖 Graph 是討論

Vertex 

Edge ( 點之間的關聯 )

的學問

Graph

  • 一般而言,因為圖論的專有名詞沒有"精巧的"中文翻譯,所以學習時務必對於英文名詞孰悉
英文(n.) 中譯(參考某知名書籍)
walk 道路
path 路徑
trail 行跡
tour 迴路

Coloring

給定一張地圖

 

如果希望一個區域與相鄰的區域有不同的顏色

那最少要幾種顏色?

Note.

假設地圖是一個平面,無飛地

Coloring

如何討論怎麼著色?

 

一個區塊有很多形狀

 

不同形狀能銜接的鄰居都不一樣...

 

枚舉所有的形狀 ?

Coloring

著色問題

 

一個區塊雖然有很多形狀

 

但答案比起區塊的形狀

 

討論區塊可能的相連方法比較重要

Coloring

著色問題

 

一個區塊雖然有很多形狀

 

但答案比起區塊的形狀

 

討論區塊可能的相連方法比較重要

  • 一張圖 Graph 是討論

Vertex 

Edge ( 點之間的關聯 )

的學問

Coloring

  • 一張圖 Graph 是討論

Vertex 

Edge ( 點之間的關聯 )

的學問

Coloring

  • 一張圖 Graph 是討論

Vertex 

Edge ( 點之間的關聯 )

的學問

Coloring

  • 一張圖 Graph 是討論

Vertex 

Edge ( 點之間的關聯 )

的學問

點著色問題

 

每一個點都要有顏色

相鄰的點顏色要不一樣

 

至少要幾個顏色才能滿足條件

Graph

  • 圖的結構
  • 一張圖中有很多點,對於每一個點,會需要知道他的鄰居有誰

Graph

  • 圖的結構
  • 一張圖中有很多點,對於每一個點,會需要知道他的鄰居有誰
vector<int> V[4];

//V[i] 儲存 點 i 的鄰居有誰
V[0] = {1,2,3};

1

2

3

0

Coloring

點著色問題

 

檢查一張圖(平面的)是否可以用 \(K\) 種顏色塗色,使得相鄰的點顏色不同

\(K = 1\)

有邊就不行

\(K = 2\)

easy algo.

\(K = 3\)

NP Problem

\(K = 4\)

四色定理

1996. NEIL ROBERTSON \(O(v^2)\)

Bicoloring (uva 10004)

檢查一張圖是否可以用 \(2\) 種顏色塗色,使得相鄰的點顏色不同

Bicoloring (uva 10004)

檢查一張圖是否可以用 \(2\) 種顏色塗色,使得相鄰的點顏色不同

決定好一個點的顏色之後,他鄰居的顏色就被固定了

Bicoloring (uva 10004)

檢查一張圖是否可以用 \(2\) 種顏色塗色,使得相鄰的點顏色不同

1. 決定一個點的顏色

 

 

        

 

Bicoloring (uva 10004)

檢查一張圖是否可以用 \(2\) 種顏色塗色,使得相鄰的點顏色不同

1. 決定一個點的顏色

2. 檢查這一個點的鄰居

      如果還沒有顏色,就幫他塗

        

 

Bicoloring (uva 10004)

檢查一張圖是否可以用 \(2\) 種顏色塗色,使得相鄰的點顏色不同

1. 決定一個點的顏色

2. 檢查這一個點的鄰居

      如果還沒有顏色,就幫他塗

      如果有顏色,就檢查是否合法  

 

Bicoloring (uva 10004)

檢查一張圖是否可以用 \(2\) 種顏色塗色,使得相鄰的點顏色不同

1. 決定一個點的顏色

2. 檢查這一個點的鄰居

      如果還沒有顏色,就幫他塗

      如果有顏色,就檢查是否合法  

3. 改以鄰居為出發點 (遞迴2.)

Bicoloring (uva 10004)

檢查一張圖是否可以用 \(2\) 種顏色塗色,使得相鄰的點顏色不同

1. 決定一個點的顏色

2. 檢查這一個點的鄰居

      如果還沒有顏色,就幫他塗

      如果有顏色,就檢查是否合法  

3. 改以鄰居為出發點 (遞迴2.)

Bicoloring (uva 10004)

檢查一張圖是否可以用 \(2\) 種顏色塗色,使得相鄰的點顏色不同

1. 決定一個點的顏色

2. 檢查這一個點的鄰居

      如果還沒有顏色,就幫他塗

      如果有顏色,就檢查是否合法  

3. 改以鄰居為出發點 (遞迴2.)

Bicoloring (uva 10004)

檢查一張圖是否可以用 \(2\) 種顏色塗色,使得相鄰的點顏色不同

1. 決定一個點的顏色

2. 檢查這一個點的鄰居

      如果還沒有顏色,就幫他塗

      如果有顏色,就檢查是否合法  

3. 改以鄰居為出發點 (遞迴2.)

Bicoloring (uva 10004)

檢查一張圖是否可以用 \(2\) 種顏色塗色,使得相鄰的點顏色不同

1. 決定一個點的顏色

2. 檢查這一個點的鄰居

      如果還沒有顏色,就幫他塗

      如果有顏色,就檢查是否合法  

3. 改以鄰居為出發點 (遞迴2.)

Bicoloring (uva 10004)

檢查一張圖是否可以用 \(2\) 種顏色塗色,使得相鄰的點顏色不同

1. 決定一個點的顏色

2. 檢查這一個點的鄰居

      如果還沒有顏色,就幫他塗

      如果有顏色,就檢查是否合法  

3. 改以鄰居為出發點 (遞迴2.)

Copy of nthucp2019

By tunchin kao

Copy of nthucp2019

Sep 18th, 2019

  • 53