676 1 分鐘

# 題目: UVa 11988 - Broken Keyboard (a.k.a. Beiju Text) # 題目說明 你正在用一個壞掉的鍵盤打一篇文章 其實也沒有那麼糟,唯一的問題是鍵盤會自己打 home 與 end 這種狀況叫做 Beiju ,你的目標是找到 Beiju 訊息 INPUT: 輸入一長串的字串 OUTPUT: 輸出 Beiju 訊息 # 解題方法 用 list 儲存訊息,以 it 紀錄當前輸入位置 當碰到 [ 時, it 移到最前面 當碰到 ] 時, it 移到最後面 # 參考程式碼 #include <iostream>#include...
1.5k 1 分鐘

# 題目: UVa 10653 - Bombs! NO they are Mines!! # 題目說明 現在是 3002 年,機器人已經統治了世界,你是少數存活的人類之一 機器人一直用你來比對他們是否能變得更聰明 今天是一個特別的日子,只要你能在 IRQ2003 領域中擊敗最快的機器人,你就會獲得自由 就算他們是智能的,但機器人仍無法改變他們的基本缺陷:只能走 上 下 左 右 你擁有一張顯示不安全區域的地圖,你必須找到從起點到終點的最短路徑 INPUT: 每筆資料第一行有兩個整數 R 和 C ,代表地圖的大小 第二行有一個整數 N ,代表以下有幾筆資料 接下來有 N 行,每行先讀入兩個整數...
900 1 分鐘

# 題目: UVa 11572 - Unique Snowflakes # 題目說明 Emily 有一個很酷的想法:包裝雪花並販售 她設計了一個自動包裝雪花的機器 但是,她想讓每一個雪花包裝都不同 寫一個程式找出最大雪花包裝的大小 INPUT: 第一行為一個整數 n ,代表有 n 筆資料 每筆資料第一行為一個整數 k ,代表有 k 片雪花 接下來有 k 行,每行有一個整數,代表雪花的編號 OUTPUT: 每筆資料輸出最多能裝幾片雪花 # 解題方法 求一個陣列中最長的不重複子陣列 如果遇到重複的雪花,則記錄長度並刪除最前項 # 參考程式碼 #include...
814 1 分鐘

# 題目: UVa 11136 - Hoax or what # 題目說明 Mal-Wart 超市正在進行促銷,以下是說明 客戶需將寫有電話的帳單存入抽獎箱 每天結束時會選擇最貴及最便宜的帳單各一張,買最貴的人得到最貴與最便宜的差額 抽獎完的帳單不會放回抽獎箱 INPUT: 每筆資料第一行為一個整數 n ,代表有 n 天 接下來會有 n 行,每行會有一個整數 k ,代表帳單的數量,接下來 k 個整數代表每個帳單的金額 當 n 為 0 時結束程式 OUTPUT: 輸出超市總共要為這個促銷支出多少錢 # 解題方法 利用 multiset...
1.5k 1 分鐘

# 題目: UVa 978 - Lemmings Battle # 題目說明 兩個種族正在進行戰鬥,到底是綠色種族贏還是藍色種族贏呢? 寫一個程式來判斷哪個種族獲得了勝利 INPUT: 第一行有一個整數 N ,代表有幾筆資料 每筆資料第一行有三個整數 B 、 SG 和 SB B 代表每次戰鬥派出的人數 SG 代表綠色種族人數 SB 代表藍色種族人數 接下來的 SG 為綠色種族的戰力, SB 為藍色種族的戰力 OUTPUT: 如果雙方全軍覆沒則輸出 green and blue died 如果一方勝利則輸出勝利種族及存活的戰力 (順序為降冪排序) # 解題方法 將雙方隊伍存入...
974 1 分鐘

# 題目: UVa 11286 – Conformity # 題目說明 Waterloo 大學的新生因為興趣不同,而選擇不同的課 但學校希望他們選的課能盡量一樣,所以設置了一個獎項 最受歡迎的課程組合 寫一個程式找出最受歡迎的課程組合 INPUT: 每筆資料第一行為一個整數 n ,代表學生人數 接下來會有 n 行,每行有五個整數,代表選的課程 當 n 為 0 時結束程式 OUTPUT: 輸出最受歡迎的課程組合的人數 如果有多個最受歡迎的課程組合,則將人數加總 # 解題方法 先將每個課程組合排序,之後連接起來存入 string 將 string 存入 map...
609 1 分鐘

# 題目: UVa 10282 - Babelfish # 題目說明 你剛剛移民到一個大城市,這裡的語言對你來說很陌生,幸運的是,你有一個字典 寫一個程式將未知語言翻譯成英文 INPUT: 每一行會有兩個字串,前者代表英文,後者代表未知語言,直到輸入空白 接著重複輸入未知語言 OUTPUT: 將未知語言翻譯成英文輸出,如果字典找不到則輸出 eh # 解題方法 這題主要是熟悉 map 這個容器,一個 key 會對應到一個 value 建 map 後,搜尋輸出即可 # 參考程式碼 #include <iostream>#include...
1.4k 1 分鐘

# 題目: UVa 924 - Spreading the News # 題目說明 每個人每天會將新消息告訴朋友 寫一個程式去找出以下兩項 最多人知道消息那一天的人數 最大人數發生的最早那一天 INPUT: 第一行會有一個整數 E ,代表人數,由 0 編號至 E - 1 接下來會有 E 行,代表 0 至 E - 1 的朋友 每行會有一個整數 N ,代表朋友的人數,之後會有 N 個整數,代表朋友的編號 接著會有一個整數 T ,代表有幾個 cases,之後會有 T 個整數,代表從他開始傳遞 OUTPUT: 輸出最大人數及最大人數最早發生的那一天 如果最大人數為 0 ,則不需要輸出後者 #...
1.6k 1 分鐘

# 題目: UVa 429 - Word Transformation # 題目說明 有一種字謎叫 word transformation 給你一個字,每次改變一個字母使之成為一個新單字,最終變得與目標字一樣 你的目標是找到一開始的字需要經過多少次轉換會變成目標字 INPUT: 輸入第一行有一個整數 N ,代表總共有幾個 set 接著空一行 接下來會連續輸入字串,直到 * 符號 * 之後,每行會有兩個字串,前者為一開始的字,後者為目標字 當輸入為空行時,結束這個 set OUTPUT: 先輸出每個開始字及目標字,接著輸出轉換的數量 每個 set 會隔一行 # 解題方法 先用 map...
763 1 分鐘

# 題目: UVa 10226 - Hardwood Species # 題目說明 計算每種樹的出現比例 INPUT: 第一行有一個整數 n ,代表共有幾個 cases 接著空一行,之後重複讀取字串 name ,代表樹的名稱,直到空行 OUTPUT: 輸出樹的名稱及出現比例,順序為英文字母升冪,位數到小數點後四位 每筆資料以空行隔開 # 解題方法 由於用到 cin 又用到 getline ,所以需要先呼叫 cin.ignore() 清空緩衝區 用 map 去累積每種樹出現的數量 # 參考程式碼 #include <iostream>#include...