給你一個 NxN 的陣列,請你找出有最大和的子區域 (sub-rectangle) 其和為多少。一個區域的和指的是該區域中所有元素值的和。一個區域是指相連的任意大小的子陣列。例如,對以下的二維陣列:

其最大和的子區域位於左下角,並且其和為 15。如下所示:

閱讀全文 »

給你一疊薄煎餅,請你寫一個程式來指出要如何安排才能使這些薄煎餅由上到下依薄煎餅的半徑由小到大排好。所有的薄煎餅半徑均不相同。

要把薄煎餅排好序需要對這些薄煎餅做翻面(flip)的動作。方法是以一抹刀插入一疊薄煎餅中,然後做翻面的動作(也就是說在抹刀上面的薄煎餅經翻面後,會依相反的次序排列)。若一疊共有n個薄煎餅,我們定義最底下的薄煎餅的位置為1,最上面的薄煎餅位置為n。當抹刀插入位置為k時,代表從位置k到位置n的薄煎餅要做翻面的動作。

一開始時,這疊薄煎餅隨意堆放,並以半徑大小來表示。例如:以下3疊薄煎餅(最左邊那一疊8是最上面一個薄煎餅的半徑)

8           7           2
4           6           5
6           4           8
7           8           4
5           5           6
2           2           7

對最左邊那疊薄煎餅,如果我們把抹刀插在位置3(就是半徑為7的那塊薄煎餅的下面)的地方做翻面,就會得到中間那疊,如果我們再把抹刀插在位置1(就是半徑為2的那塊薄煎餅的下面)的地方做翻面,就會得到最右邊那疊。

閱讀全文 »

$n$ 個整數的序列我們稱為 jolly jumper,如果相鄰兩數的差的絕對值恰好為 $1$$n-1$。例如:

1 4 2 3

就是 jolly jumper ($n=4$)。因為相鄰兩數的差的絕對值為 3,2,1,就是 $1$$n-1$。但是

1 4 2 -1 6

不是 jolly jumper ($n=5$)。因為相鄰兩數的差的絕對值為 3,2,3,7,並非 $1$$n-1$

你的任務是寫一個程式來判斷一個整數序列是否為 jolly jumper。

Input

每組測試資料一列,第一個正整數為 $n$ ($n < 3000$),代表此整數序列的長度。接下來有 $n$ 個整數,代表此整數序列。請參考 Sample Input。

Output

對每一組測試資料,輸出此整數序列是否為 jolly jumper。請參考 Sample Output。

Sample Input

4 1 4 2 3
5 1 4 2 -1 6

Sample Output

Jolly
Not jolly

1976 年,在電腦協助之下證明了 4 色理論 (Four Color Map Theorem)。就是僅以 4 種顏色在地圖上不同的區域塗色,使得相鄰的區域顏色均不相同。

現在,你要解決一個類似,但比較簡單的問題。給你一個相連的圖,請你在節點上塗色 (只有 2 種不同的顏色),並且回答是否可以使得相鄰的節點顏色均不相同。為了使問題簡單一些,你可以假設:

  • 沒有節點會有連向自己的邊。
  • 邊是沒有方向性的,也就是說如果節點 A 可以連到節點 B,那麼代表節點 B 也可以連到節點 A。
  • 圖形是強連通的,也就是說任 2 節點之間皆有路徑相連。

Input

輸入含有多組測試資料。每組測試資料的第一列有一個正整數 $n$ ($1 < n < 200$) 代表節點的數目。第二列有一個正整數 $m$,代表邊的數目。接下來的 $m$ 列每列有 2 個整數代表邊所連接的 2 個節點的代號。這 $n$ 個節點的代號分別為 0 到 n - 1。

$n=0$ 代表輸入結束。

Output

對每一組測試資料輸出是否可以用 2 種顏色塗節點使得相鄰的節點顏色均不相同。若可以請輸出:BICOLORABLE.,否則輸出:NOT BICOLORABLE.

Sample Input

3
3
0 1
1 2
2 0
9
8
0 1
0 2
0 3
0 4
0 5
0 6
0 7
0 8
0

Sample Output

NOT BICOLORABLE.
BICOLORABLE.

有一種常見的撲克牌遊戲叫”梭哈”(就是你在電影賭神中常見的那種遊戲),每個人各發給5張牌,然後根據牌的花色或點數的組合,給予不同等級的名稱例如:同花順,2對等等。

現在有一個類似的遊戲,一個玩家先發給5張牌,然後桌上另有5張牌。玩家的5張牌是打開的,而桌上的5張牌是蓋著的。玩家可以換掉手上的牌0~5張(換的時候按桌上的牌的順序來更換),所以他當然希望換牌之後能得到最好的牌。由於桌上的牌是蓋著的,一般人是無法知道牌的內容的,所以他必須依照機率來決定該換掉哪些牌。但是在這個問題中,我們的玩家具有特異功能,就是他能看穿桌上那5張蓋著的牌。因此他可以明確的知道該換掉哪些牌以得到最好的結果。你的任務就是寫一個程式來指點他該換掉哪些牌,使得最後手上的牌等級最高。以下簡單介紹梭哈中由高到低各等級牌的名稱:

  • Straight flush: (中文翻譯:同花順)5張牌同一花色(flush),並且形成一個順子(straight)。例如:8H 9H TH JH QH

  • Four of a kind:(中文翻譯:4條或鐵枝)4張牌同一個點數。例如:8H 8D 8C 8S 9D

  • Full House:(中文翻譯:葫蘆)3張同一點數,另2張同一點數。例如:8H 8D 8C 7S 7D

  • Flush:(中文翻譯:同花)5張牌同一花色。例如:6H 9H TH JH QH

  • Straight:(中文翻譯:順子)5張牌的點數為連續的。例如:8S 9H TH JH QD。請注意,A是比較特別的:點數T J Q K A是順子,A 2 3 4 5也是順子,而 J Q K A 2不是順子。

  • Three of a kind:(中文翻譯:3條)3張牌同一個點數,另2張牌不同點數。例如:8H 8D 8C AH 9D

  • Two pairs:(中文翻譯:2對)有2組2張牌同一個點數,另1張牌不同點數。例如:8H 8D 5C 5H 9D

  • One pair:(中文翻譯:1對)有2張牌同一個點數,另3張牌皆不同點數。例如:8H 8D KC 5H 2D

  • High Card:(中文翻譯:不知道,就是最爛的就是了)沒有以上任何情況就屬於high card。例如:AH 9D 7C 3H 2D

閱讀全文 »

在windows作業系統中,你可以在桌面(desktop)上看到一些圖像(icon)或區域(工作視窗),他們在桌面都定義出一定的區域。當你按下滑鼠的按鍵時,系統必須知道現在滑鼠游標在哪裡,哪一個icon或工作視窗被選到了。在這個問題中,你要回答當滑鼠按鍵被按下去時,那一個icon或區域被選中了(按在區域的邊上也算選中)。如果滑鼠游標正好沒有在任何icon或工作視窗上,則距離游標最近的icon會被選上(有可能會同時選上2個以上相同距離且最近的icon)。舉例說明,以下圖表示電腦螢幕上桌面的配置關係圖:

當你在a的位置按下滑鼠按鍵時,A區域會被選中。當你在b的位置按下滑鼠按鍵時,1這個icon會被選中。當你在c的位置按下滑鼠按鍵時,6和7這2個icon會同時被選中,因為他們與c的距離相同。但是當你在 d的位置按下滑鼠按鍵時,事情會變的含糊不清,因為這個位置同時位於B與C的區域中。要解決這個問題,我們得看是那個區域在比較上方,然後系統會選擇比較上方的區域。由於區域是大寫英文字母來表示,同時也是區域出現的次序,所以C區域比B區域晚出現,也就是說從桌面的配置來看,C區域會蓋住B區域的某部分。因此,當滑鼠按在d時,系統會選擇C區域。請注意:區域總是會蓋住icon,所已被遮蓋住的icon不需要被考慮。還有,左上角的座標為(0,0)

寫一個程式讀入一連串icon及工作視窗的資料,然後再讀入滑鼠按鍵時的游標位置資料,回答選中哪些物件。螢幕桌面可視為X-Y平面,所有的座標值均介於0到499,並且你可以假設icon和工作視窗均是整個位於螢幕桌面上。你的程式必須依icon讀入的順序從1開始依次來編號。並且依工作視窗讀入的順序從A開始依次來編號。

閱讀全文 »

在幾何上,任何正方形都有一個唯一的中心點。在畫有格子線的平面上,只有在正方形的邊長為奇數時才成立。因為任何一個奇數都可以寫成2k+1。所以若我們定義某一個正方形的大小為k,也就是表示他的邊長為2k+1。現在我們要依照下面的規則來定義一個正方形所構成的圖案:

  1. 最大的正方形大小為k(也就是說邊長2k+1)並且被放置在一個大小為1024的正方形的正中央。(也就是說整個可以使用的區域為一個邊長2049的正方形,如以座標表示,此區域左上角座標為(0,0),右下角座標為(2048,2048))
  2. 可以允許使用的正方形大小最小為1,最大為512。因此 1<= k <= 521。
  3. 所有 k>1 的正方形,以其4個角為中心點各有一個大小為 k div 2 的正方形(在這裡div指的是整數的除法,例如:9 div 2 = 4)

因此,給你一個k值,根據以上的規則,我們可以畫出一個唯一的圖案。而螢幕上的每一個點可能落在0個或多個正方形中。(我們定義若點剛好落在邊上,亦視為落在此正方形中)。所以如果最大的正方形的k=15,我們可以畫出以下的圖案:

寫一個程式,讀入k及某一個點的座標,輸出該點總共被多少個正方形所包圍。

閱讀全文 »

打字時一個常見的錯誤就是沒有把手放在正確位置,而是偏右邊一個位置。所以會發生 Q 被打成 WJ 被打成 K 等等的情況。你的任務就是要把打錯的字修正回來。

Input

輸入包含許多列,每列可能包含有數字,空白字元,大寫英文字母 (QAZ 除外),標點符號 (` 除外)。

Output

對每一列中的每個字元,請輸出在鍵盤 (如上圖) 上其左邊一個位置的字元。但是輸入中的空白字元,輸出時亦請輸出空白字元。

Sample Input

O S, GOMR YPFSU/
URD. ,U [JPMR MI,NRT OD 8346333

Sample Output

I AM FINE TODAY.
YES, MY PHONE NUMBER IS 7235222

由於高速繪圖電腦工作站的出現,CAD (computer-aided design) 和其他領域 (CAM, VLSI 設計) 都充分使用這些電腦的長處。而在本問題中,你必須幫助建築師,根據他所提供給你都市中建築物的位置,你得幫他找出這些建築物的空中輪廓 (skyline)。為了使問題容易處理一些,所有的建築物都是矩形的,並且都建築在同一個平面上。你可以把這城市看成一個二度平面空間。每一棟建築物都以 $(L_i,H_i,R_i)$ 這樣的序列來表示。其中 $L_i$$R_i$ 分別是該建築物左邊和右邊的位置,$H_i$ 則是建築物的高度。下方左圖就是 $(1,11,5)$$(2,6,7)$$(3,13,9)$$(12,7,16)$$(14,3,25)$$(19,18,22)$$(23,13,29)$$(24,4,28)$ 這八棟建築物的位置圖。而你的任務就是畫出這些建築物所構成的輪廓,並且以 $(1, 11, 3, 13, 9, 0, 12, 7, 16, 3, 19, 18, 22, 3, 23, 13, 29, 0)$ 這樣的序列來表示如下方右圖的輪廓。

閱讀全文 »

在密碼學裡面有一種很簡單的加密方式,就是把明碼的每個字元加上某一個整數 $K$ 而得到密碼的字元 (明碼及密碼字元一定都在 ASCII 碼中可列印的範圍內)。例如若 $K=2$,那麼 apple 經過加密後就變成 crrng 了。解密則是反過來做。這個問題是給你一個密碼字串,請你依照上述的解密方式輸出明碼。

至於在本任務中 $K$ 到底是多少,請自行參照 Sample Input 及 Sample Output 推出來吧!相當簡單的。

Input

每筆測試資料一列。每列有 1 個字串,就是需要解密的明碼。

Output

對每一測試資料,請輸出解密後的密碼。

Sample Input

1JKJ'pz'{ol'{yhklthyr'vm'{ol'Jvu{yvs'Kh{h'Jvywvyh{pvu5
1PIT'pz'h'{yhklthyr'vm'{ol'Pu{lyuh{pvuhs'I|zpulzz'Thjopul'Jvywvyh{pvu5
1KLJ'pz'{ol'{yhklthyr'vm'{ol'Kpnp{hs'Lx|pwtlu{'Jvywvyh{pvu5

Sample Output

*CDC is the trademark of the Control Data Corporation.
*IBM is a trademark of the International Business Machine Corporation.
*DEC is the trademark of the Digital Equipment Corporation.