ccf歷年真題(截至2015年9月)


問題描述

試題編號:

201509-1

試題名稱:

數列分段

時間限制:

1.0s

內存限制:

256.0MB

問題描述:

問題描述

  給定一個整數數列,數列中連續相同的最長整數序列算成一段,問數列中共有多少段?

輸入格式

  輸入的第一行包含一個整數n,表示數列中整數的個數。
  第二行包含n個整數a1, a2, …, an,表示給定的數列,相鄰的整數之間用一個空格分隔。

輸出格式

  輸出一個整數,表示給定的數列有多個段。

樣例輸入

8
8 8 8 0 12 12 8 0

樣例輸出

5

樣例說明

  8 8 8是第一段,0是第二段,12 12是第三段,倒數第二個整數8是第四段,最后一個0是第五段。

評測用例規模與約定

  1 ≤ n ≤ 1000,0 ≤ ai ≤ 1000。

問題描述

試題編號:

201509-2

試題名稱:

日期計算

時間限制:

1.0s

內存限制:

256.0MB

問題描述:

問題描述

  給定一個年份y和一個整數d,問這一年的第d天是幾月幾日?
  注意閏年的2月有29天。滿足下面條件之一的是閏年:
  1) 年份是4的整數倍,而且不是100的整數倍;
  2) 年份是400的整數倍。

輸入格式

  輸入的第一行包含一個整數y,表示年份,年份在1900到2015之間(包含1900和2015)。
  輸入的第二行包含一個整數d,d在1至365之間。

輸出格式

  輸出兩行,每行一個整數,分別表示答案的月份和日期。

樣例輸入

2015
80

樣例輸出

3
21

樣例輸入

2000
40

樣例輸出

2
9

 

問題描述

試題編號:

201509-3

試題名稱:

模板生成系統

時間限制:

1.0s

內存限制:

256.0MB

問題描述:

問題描述

  成成最近在搭建一個網站,其中一些頁面的部分內容來自數據庫中不同的數據記錄,但是頁面的基本結構是相同的。例如,對於展示用戶信息的頁面,當用戶為 Tom 時,網頁的源代碼是


  而當用戶為 Jerry 時,網頁的源代碼是


  這樣的例子在包含動態內容的網站中還有很多。為了簡化生成網頁的工作,成成覺得他需要引入一套模板生成系統。
  模板是包含特殊標記的文本。成成用到的模板只包含一種特殊標記,格式為 {{ VAR }},其中 VAR 是一個變量。該標記在模板生成時會被變量 VAR 的值所替代。例如,如果變量 name = "Tom",則 {{ name }} 會生成 Tom。具體的規則如下:
  ·變量名由大小寫字母、數字和下划線 (_) 構成,且第一個字符不是數字,長度不超過 16 個字符。
  ·變量名是大小寫敏感的,Name 和 name 是兩個不同的變量。
  ·變量的值是字符串。
  ·如果標記中的變量沒有定義,則生成空串,相當於把標記從模板中刪除。
  ·模板不遞歸生成。也就是說,如果變量的值中包含形如 {{ VAR }} 的內容,不再做進一步的替換。

輸入格式

  輸入的第一行包含兩個整數 m, n,分別表示模板的行數和模板生成時給出的變量個數。
  接下來 m 行,每行是一個字符串,表示模板。
  接下來 n 行,每行表示一個變量和它的值,中間用一個空格分隔。值是字符串,用雙引號 (") 括起來,內容可包含除雙引號以外的任意可打印 ASCII 字符(ASCII 碼范圍 32, 33, 35-126)。

輸出格式

  輸出包含若干行,表示模板生成的結果。

樣例輸入

11 2
< !DOCTYPE html>
< html>
< head>
< title>User {{ name }}</title>
< /head>
< body>
< h1>{{ name }}</h1>
< p>Email: <a href="mailto:{{ email }}">{{ email }}</a></p>
< p>Address: {{ address }}</p>
< /body>
< /html>
name "David Beckham"
email "david@beckham.com"

樣例輸出

<!DOCTYPE html>
< html>
< head>
< title>User David Beckham</title>
< /head>
< body>
< h1>David Beckham</h1>
< p>Email: <a href="mailto:david@beckham.com">david@beckham.com</a></p>
< p>Address: </p>
< /body>
< /html>

評測用例規模與約定

  0 ≤ m ≤ 100
  0 ≤ n ≤ 100
  輸入的模板每行長度不超過 80 個字符(不包含換行符)。
  輸入保證模板中所有以 {{ 開始的子串都是合法的標記,開始是兩個左大括號和一個空格,然后是變量名,結尾是一個空格和兩個右大括號。
  輸入中所有變量的值字符串長度不超過 100 個字符(不包括雙引號)。
  保證輸入的所有變量的名字各不相同。

 

問題描述

試題編號:

201509-4

試題名稱:

高速公路

時間限制:

1.0s

內存限制:

256.0MB

問題描述:

問題描述

  某國有n個城市,為了使得城市間的交通更便利,該國國王打算在城市之間修一些高速公路,由於經費限制,國王打算第一階段先在部分城市之間修一些單向的高速公路。
  現在,大臣們幫國王擬了一個修高速公路的計划。看了計划后,國王發現,有些城市之間可以通過高速公路直接(不經過其他城市)或間接(經過一個或多個其他城市)到達,而有的卻不能。如果城市A可以通過高速公路到達城市B,而且城市B也可以通過高速公路到達城市A,則這兩個城市被稱為便利城市對。
  國王想知道,在大臣們給他的計划中,有多少個便利城市對。

輸入格式

  輸入的第一行包含兩個整數n, m,分別表示城市和單向高速公路的數量。
  接下來m行,每行兩個整數a, b,表示城市a有一條單向的高速公路連向城市b。

輸出格式

  輸出一行,包含一個整數,表示便利城市對的數量。

樣例輸入

5 5
1 2
2 3
3 4
4 2
3 5

樣例輸出

3

樣例說明


  城市間的連接如圖所示。有3個便利城市對,它們分別是(2, 3), (2, 4), (3, 4),請注意(2, 3)和(3, 2)看成同一個便利城市對。

評測用例規模與約定

  前30%的評測用例滿足1 ≤ n ≤ 100, 1 ≤ m ≤ 1000;
  前60%的評測用例滿足1 ≤ n ≤ 1000, 1 ≤ m ≤ 10000;
  所有評測用例滿足1 ≤ n ≤ 10000, 1 ≤ m ≤ 100000。

 

問題描述

試題編號:

201509-5

試題名稱:

最佳文章

時間限制:

1.0s

內存限制:

256.0MB

問題描述:

問題描述

  小明最近在研究一門新的語言,叫做Q語言。Q語言單詞和文章都可以用且僅用只含有小寫英文字母的字符串表示,任何由這些字母組成的字符串也都是一篇合法的Q語言文章。
  在Q語言的所有單詞中,小明選出了他認為最重要的n個。使用這些單詞,小明可以評價一篇Q語言文章的“重要度”。
  文章“重要度”的定義為:在該文章中,所有重要的Q語言單詞出現次數的總和。其中多次出現的單詞,不論是否發生包含、重疊等情況,每次出現均計算在內。
  例如,假設n = 2,小明選出的單詞是gvagv和agva。在文章gvagvagvagv中,gvagv出現了3次,agva出現了2次,因此這篇文章的重要度為3+2=5。
  現在,小明想知道,一篇由m個字母組成的Q語言文章,重要度最高能達到多少。

輸入格式

  輸入的第一行包含兩個整數n, m,表示小明選出的單詞個數和最終文章包含的字母個數。
  接下來n行,每行包含一個僅由英文小寫字母構成的字符串,表示小明選出的這n個單詞。

輸出格式

  輸出一行一個整數,表示由m個字母組成的Q語言文章中,重要度最高的文章的重要度。

樣例輸入

3 15
agva
agvagva
gvagva

樣例輸出

11

樣例說明

  15個字母組成的重要度最高的文章為gvagvagvagvagva。
  在這篇文章中,agva出現4次,agvagva出現3次,gvagva出現4次,共計4+3+4=11次。

評測用例規模與約定

  在評測時將使用10個評測用例對你的程序進行評測。
  設s為構成n個重要單詞字母的總個數,例如在樣例中,s=4+7+6=17;a為構成n個重要單詞字母的種類數,例如在樣例中,共有3中字母'a','g','v',因此a=3。
  評測用例1和2滿足2 ≤ n ≤ 3,1500 ≤ m ≤ 2000,s = 40;
  評測用例3和4滿足m = 20,2 ≤ a ≤ 3;
  評測用例5、6和7滿足2000 ≤ m ≤ 100000;
  評測用例8滿足n = 2;
  所有的評測用例滿足1 ≤ s ≤ 100,1 ≤ m ≤ 1015,每個單詞至少包含1個字母,保證單詞中僅出現英文小寫字母,輸入中不含多余字符,不會出現重復的單詞。

 

問題描述

試題編號:

201503-1

試題名稱:

圖像旋轉

時間限制:

5.0s

內存限制:

256.0MB

問題描述:

問題描述

  旋轉是圖像處理的基本操作,在這個問題中,你需要將一個圖像逆時針旋轉90度。
  計算機中的圖像表示可以用一個矩陣來表示,為了旋轉一個圖像,只需要將對應的矩陣旋轉即可。

輸入格式

  輸入的第一行包含兩個整數n, m,分別表示圖像矩陣的行數和列數。
  接下來n行每行包含m個整數,表示輸入的圖像。

輸出格式

  輸出m行,每行包含n個整數,表示原始矩陣逆時針旋轉90度后的矩陣。

樣例輸入

2 3
1 5 3
3 2 4

樣例輸出

3 4
5 2
1 3

評測用例規模與約定

  1 ≤ n, m ≤ 1,000,矩陣中的數都是不超過1000的非負整數。

 

問題描述

試題編號:

201503-2

試題名稱:

數字排序

時間限制:

1.0s

內存限制:

256.0MB

問題描述:

問題描述

  給定n個整數,請統計出每個整數出現的次數,按出現次數從多到少的順序輸出。

輸入格式

  輸入的第一行包含一個整數n,表示給定數字的個數。
  第二行包含n個整數,相鄰的整數之間用一個空格分隔,表示所給定的整數。

輸出格式

  輸出多行,每行包含兩個整數,分別表示一個給定的整數和它出現的次數。按出現次數遞減的順序輸出。如果兩個整數出現的次數一樣多,則先輸出值較小的,然后輸出值較大的。

樣例輸入

12
5 2 3 3 1 3 4 2 5 2 3 5

樣例輸出

3 4
2 3
5 3
1 1
4 1

評測用例規模與約定

  1 ≤ n ≤ 1000,給出的數都是不超過1000的非負整數。

 

問題描述

試題編號:

201503-3

試題名稱:

節日

時間限制:

1.0s

內存限制:

256.0MB

問題描述:

問題描述

  有一類節日的日期並不是固定的,而是以“a月的第b個星期c”的形式定下來的,比如說母親節就定為每年的五月的第二個星期日。
  現在,給你a,b,c和y1, y2(1850 ≤ y1, y2 ≤ 2050),希望你輸出從公元y1年到公元y2年間的每年的a月的第b個星期c的日期。
  提示:關於閏年的規則:年份是400的整數倍時是閏年,否則年份是4的倍數並且不是100的倍數時是閏年,其他年份都不是閏年。例如1900年就不是閏年,而2000年是閏年。
  為了方便你推算,已知1850年1月1日是星期二。

輸入格式

  輸入包含恰好一行,有五個整數a, b, c, y1, y2。其中c=1, 2, ……, 6, 7分別表示星期一、二、……、六、日。

輸出格式

  對於y1和y2之間的每一個年份,包括y1和y2,按照年份從小到大的順序輸出一行。
  如果該年的a月第b個星期c確實存在,則以"yyyy/mm/dd"的格式輸出,即輸出四位數的年份,兩位數的月份,兩位數的日期,中間用斜杠“/”分隔,位數不足時前補零。
  如果該年的a月第b個星期c並不存在,則輸出"none"(不包含雙引號)。

樣例輸入

5 2 7 2014 2015

樣例輸出

2014/05/11
2015/05/10

評測用例規模與約定

  所有評測用例都滿足:1 ≤ a ≤ 12,1 ≤ b ≤ 5,1 ≤ c ≤ 7,1850 ≤ y1, y2 ≤ 2050。

 

問題描述

試題編號:

201503-4

試題名稱:

網絡延時

時間限制:

1.0s

內存限制:

256.0MB

問題描述:

問題描述

  給定一個公司的網絡,由n台交換機和m台終端電腦組成,交換機與交換機、交換機與電腦之間使用網絡連接。交換機按層級設置,編號為1的交換機為根交換機,層級為1。其他的交換機都連接到一台比自己上一層的交換機上,其層級為對應交換機的層級加1。所有的終端電腦都直接連接到交換機上。
  當信息在電腦、交換機之間傳遞時,每一步只能通過自己傳遞到自己所連接的另一台電腦或交換機。請問,電腦與電腦之間傳遞消息、或者電腦與交換機之間傳遞消息、或者交換機與交換機之間傳遞消息最多需要多少步。

輸入格式

  輸入的第一行包含兩個整數n, m,分別表示交換機的台數和終端電腦的台數。
  第二行包含n - 1個整數,分別表示第2、3、……、n台交換機所連接的比自己上一層的交換機的編號。第i台交換機所連接的上一層的交換機編號一定比自己的編號小。
  第三行包含m個整數,分別表示第1、2、……、m台終端電腦所連接的交換機的編號。

輸出格式

  輸出一個整數,表示消息傳遞最多需要的步數。

樣例輸入

4 2
1 1 3
2 1

樣例輸出

4

樣例說明

  樣例的網絡連接模式如下,其中圓圈表示交換機,方框表示電腦:

  其中電腦1與交換機4之間的消息傳遞花費的時間最長,為4個單位時間。

樣例輸入

4 4
1 2 2
3 4 4 4

樣例輸出

4

樣例說明

  樣例的網絡連接模式如下:

  其中電腦1與電腦4之間的消息傳遞花費的時間最長,為4個單位時間。

評測用例規模與約定

  前30%的評測用例滿足:n ≤ 5, m ≤ 5。
  前50%的評測用例滿足:n ≤ 20, m ≤ 20。
  前70%的評測用例滿足:n ≤ 100, m ≤ 100。
  所有評測用例都滿足:1 ≤ n ≤ 10000,1 ≤ m ≤ 10000。

 

問題描述

試題編號:

201503-5

試題名稱:

最小花費

時間限制:

4.0s

內存限制:

256.0MB

問題描述:

問題描述

  C國共有n個城市。有n-1條雙向道路,每條道路連接兩個城市,任意兩個城市之間能互相到達。小R來到C國旅行,他共規划了m條旅行的路線,第i條旅行路線的起點是si,終點是ti。在旅行過程中,小R每行走一單位長度的路需要吃一單位的食物。C國的食物只能在各個城市中買到,而且不同城市的食物價格可能不同。
  然而,小R不希望在旅行中為了購買較低價的糧食而繞遠路,因此他總會選擇最近的路走。現在,請你計算小R規划的每條旅行路線的最小花費是多少。

輸入格式

  第一行包含2個整數n和m。
  第二行包含n個整數。第i個整數wi表示城市i的食物價格。
  接下來n-1行,每行包括3個整數u, v, e,表示城市u和城市v之間有一條長為e的雙向道路。
  接下來m行,每行包含2個整數si和ti,分別表示一條旅行路線的起點和終點。

輸出格式

  輸出m行,分別代表每一條旅行方案的最小花費。

樣例輸入

6 4
1 7 3 2 5 6
1 2 4
1 3 5
2 4 1
3 5 2
3 6 1
2 5
4 6
6 4
5 6

樣例輸出

35
16
26
13

樣例說明

  對於第一條路線,小R會經過2->1->3->5。其中在城市2處以7的價格購買4單位糧食,到城市1時全部吃完,並用1的價格購買7單位糧食,然后到達終點。

評測用例規模與約定

  前10%的評測用例滿足:n, m ≤ 20, wi ≤ 20;
  前30%的評測用例滿足:n, m ≤ 200;
  另有40%的評測用例滿足:一個城市至多與其它兩個城市相連。
  所有評測用例都滿足:1 ≤ n, m ≤ 105,1 ≤ wi ≤ 106,1 ≤ e ≤ 10000。

 

問題描述

試題編號:

201412-1

試題名稱:

門禁系統

時間限制:

1.0s

內存限制:

256.0MB

問題描述:

問題描述

  濤濤最近要負責圖書館的管理工作,需要記錄下每天讀者的到訪情況。每位讀者有一個編號,每條記錄用讀者的編號來表示。給出讀者的來訪記錄,請問每一條記錄中的讀者是第幾次出現。

輸入格式

  輸入的第一行包含一個整數n,表示濤濤的記錄條數。
  第二行包含n個整數,依次表示濤濤的記錄中每位讀者的編號。

輸出格式

  輸出一行,包含n個整數,由空格分隔,依次表示每條記錄中的讀者編號是第幾次出現。

樣例輸入

5
1 2 1 1 3

樣例輸出

1 1 2 3 1

評測用例規模與約定

  1≤n≤1,000,讀者的編號為不超過n的正整數。

 

問題描述

試題編號:

201412-2

試題名稱:

Z字形掃描

時間限制:

2.0s

內存限制:

256.0MB

問題描述:

問題描述

  在圖像編碼的算法中,需要將一個給定的方形矩陣進行Z字形掃描(Zigzag Scan)。給定一個n×n的矩陣,Z字形掃描的過程如下圖所示:

  對於下面的4×4的矩陣,
  1 5 3 9
  3 7 5 6
  9 4 6 4
  7 3 1 3
  對其進行Z字形掃描后得到長度為16的序列:
  1 5 3 9 7 3 9 5 4 7 3 6 6 4 1 3
  請實現一個Z字形掃描的程序,給定一個n×n的矩陣,輸出對這個矩陣進行Z字形掃描的結果。

輸入格式

  輸入的第一行包含一個整數n,表示矩陣的大小。
  輸入的第二行到第n+1行每行包含n個正整數,由空格分隔,表示給定的矩陣。

輸出格式

  輸出一行,包含n×n個整數,由空格分隔,表示輸入的矩陣經過Z字形掃描后的結果。

樣例輸入

4
1 5 3 9
3 7 5 6
9 4 6 4
7 3 1 3

樣例輸出

1 5 3 9 7 3 9 5 4 7 3 6 6 4 1 3

評測用例規模與約定

  1≤n≤500,矩陣元素為不超過1000的正整數。

 

問題描述

試題編號:

201412-3

試題名稱:

集合競價

時間限制:

1.0s

內存限制:

256.0MB

問題描述:

問題描述

  某股票交易所請你編寫一個程序,根據開盤前客戶提交的訂單來確定某特定股票的開盤價和開盤成交量。
  該程序的輸入由很多行構成,每一行為一條記錄,記錄可能有以下幾種:
  1. buy p s 表示一個購買股票的買單,每手出價為p,購買股數為s。
  2. sell p s 表示一個出售股票的賣單,每手出價為p,出售股數為s。
  3. cancel i表示撤銷第i行的記錄。
  如果開盤價為p0,則系統可以將所有出價至少為p0的買單和所有出價至多為p0的賣單進行匹配。因此,此時的開盤成交量為出價至少為p0的買單的總股數和所有出價至多為p0的賣單的總股數之間的較小值。
  你的程序需要確定一個開盤價,使得開盤成交量盡可能地大。如果有多個符合條件的開盤價,你的程序應當輸出最高的那一個。

輸入格式

  輸入數據有任意多行,每一行是一條記錄。保證輸入合法。股數為不超過108的正整數,出價為精確到恰好小數點后兩位的正實數,且不超過10000.00。

輸出格式

  你需要輸出一行,包含兩個數,以一個空格分隔。第一個數是開盤價,第二個是此開盤價下的成交量。開盤價需要精確到小數點后恰好兩位。

樣例輸入

buy 9.25 100
buy 8.88 175
sell 9.00 1000
buy 9.00 400
sell 8.92 400
cancel 1
buy 100.00 50

樣例輸出

9.00 450

評測用例規模與約定

  對於100%的數據,輸入的行數不超過5000。

 

問題描述

試題編號:

201412-4

試題名稱:

最優灌溉

時間限制:

1.0s

內存限制:

256.0MB

問題描述:

問題描述

  雷雷承包了很多片麥田,為了灌溉這些麥田,雷雷在第一個麥田挖了一口很深的水井,所有的麥田都從這口井來引水灌溉。
  為了灌溉,雷雷需要建立一些水渠,以連接水井和麥田,雷雷也可以利用部分麥田作為“中轉站”,利用水渠連接不同的麥田,這樣只要一片麥田能被灌溉,則與其連接的麥田也能被灌溉。
  現在雷雷知道哪些麥田之間可以建設水渠和建設每個水渠所需要的費用(注意不是所有麥田之間都可以建立水渠)。請問灌溉所有麥田最少需要多少費用來修建水渠。

輸入格式

  輸入的第一行包含兩個正整數n, m,分別表示麥田的片數和雷雷可以建立的水渠的數量。麥田使用1, 2, 3, ……依次標號。
  接下來m行,每行包含三個整數ai, bi, ci,表示第ai片麥田與第bi片麥田之間可以建立一條水渠,所需要的費用為ci

輸出格式

  輸出一行,包含一個整數,表示灌溉所有麥田所需要的最小費用。

樣例輸入

4 4
1 2 1
2 3 4
2 4 2
3 4 3

樣例輸出

6

樣例說明

  建立以下三條水渠:麥田1與麥田2、麥田2與麥田4、麥田4與麥田3。

評測用例規模與約定

  前20%的評測用例滿足:n≤5。
  前40%的評測用例滿足:n≤20。
  前60%的評測用例滿足:n≤100。
  所有評測用例都滿足:1≤n≤1000,1≤m≤100,000,1≤ci≤10,000。

 

問題描述

試題編號:

201412-5

試題名稱:

貨物調度

時間限制:

1.0s

內存限制:

256.0MB

問題描述:

問題描述

  某公司要處理一個周期性的物流問題。
  有n個城市,第i個城市在每周的第j(1≤j≤7) 天會生產aij噸某種貨物,同時需要消耗bij噸該種貨物。已知每周的產量等於消耗量(即aij之和等於bij之和)。
  城市之間有m條道路,第k條道路連接了城市sk和tk。一條道路上運輸1噸貨物有一個固定的成本ck。道路都可以雙向使用。每天運輸的貨物量沒有限制。城市之間的距離並不遠,貨物可以從任意一個城市運輸到任意另一個城市並且在當天到達。
  貨物如果在當天沒有被消耗掉,就需要存放在倉庫里過夜。第i個城市的倉庫容量為vi,存放1 噸貨物過一夜所需的成本是wi
  請你計算該公司如果每周循環性地按照一個固定的流程調度貨物的話,該公司在最優方案下每周需要為貨物的運輸和存儲消耗多少成本。

輸入格式

  輸入的第一行有兩個正整數n和m,即城市的個數和道路的條數。
  接下來有n行,每行包含16個整數,用以描述第i個城市的相關數據。其中第i行包含的數為ai1, ai2, ai3, ai4, ai5, ai6, ai7, bi1, bi2, bi3, bi4, bi5, bi6, bi7, vi, wi
  接下來有m行,每行包含3個整數,用以描述一條道路的相關數據。其中第k行包含的數為sk, tk和ck
  輸入數據中城市的編號均為1到n之間。輸入數據的每行的行首行尾均保證沒有空格,兩個數之間恰好被一個空格隔開。

輸出格式

  你只需要輸出一個數,即最優方案下每周的支出。

樣例輸入

3 3
0 0 0 0 5 0 0 0 0 0 0 0 0 0 2 4
0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 1
0 0 0 0 0 0 0 0 0 3 0 0 0 0 2 5
1 2 1
1 3 5
2 3 1

樣例輸出

67

樣例說明

  城市1 每周五生產5 噸貨物,把其中2 噸運到存儲費用低廉的城市2 存儲,把1 噸運到城市3 存儲,剩下的2 噸留在城市1。
  在次周一的時候城市2 會消耗掉存放在那里的2 噸貨物。為了節約存儲成本,將囤放在城市1 的貨物運到城市2 存放。周三再將所有貨物運到城市3 以滿足該城市的需求。
  在此方案下,每周的運輸成本為8,每周的存儲成本為59,因此每周的總支出為67。

評測用例規模與約定

  對於100%的數據,1≤n≤100,1≤m≤500,0≤aij,bij,vi≤100,1≤wi,ck≤100。

 

問題描述

試題編號:

201409-1

試題名稱:

相鄰數對

時間限制:

1.0s

內存限制:

256.0MB

問題描述:

問題描述

  給定n個不同的整數,問這些數中有多少對整數,它們的值正好相差1。

輸入格式

  輸入的第一行包含一個整數n,表示給定整數的個數。
  第二行包含所給定的n個整數。

輸出格式

  輸出一個整數,表示值正好相差1的數對的個數。

樣例輸入

6
10 2 6 3 7 8

樣例輸出

3

樣例說明

  值正好相差1的數對包括(2, 3), (6, 7), (7, 8)。

評測用例規模與約定

  1<=n<=1000,給定的整數為不超過10000的非負整數。

 

問題描述

試題編號:

201409-2

試題名稱:

畫圖

時間限制:

1.0s

內存限制:

256.0MB

問題描述:

問題描述

  在一個定義了直角坐標系的紙上,畫一個(x1,y1)到(x2,y2)的矩形指將橫坐標范圍從x1到x2,縱坐標范圍從y1到y2之間的區域塗上顏色。
  下圖給出了一個畫了兩個矩形的例子。第一個矩形是(1,1) 到(4, 4),用綠色和紫色表示。第二個矩形是(2, 3)到(6, 5),用藍色和紫色表示。圖中,一共有15個單位的面積被塗上顏色,其中紫色部分被塗了兩次,但在計算面積時只計算一次。在實際的塗色過程中,所有的矩形都塗成統一的顏色,圖中顯示不同顏色僅為說明方便。

  給出所有要畫的矩形,請問總共有多少個單位的面積被塗上顏色。

輸入格式

  輸入的第一行包含一個整數n,表示要畫的矩形的個數。
  接下來n行,每行4個非負整數,分別表示要畫的矩形的左下角的橫坐標與縱坐標,以及右上角的橫坐標與縱坐標。

輸出格式

  輸出一個整數,表示有多少個單位的面積被塗上顏色。

樣例輸入

2
1 1 4 4
2 3 6 5

樣例輸出

15

評測用例規模與約定

  1<=n<=100,0<=橫坐標、縱坐標<=100。

 

問題描述

試題編號:

201409-3

試題名稱:

字符串匹配

時間限制:

1.0s

內存限制:

256.0MB

問題描述:

問題描述

  給出一個字符串和多行文字,在這些文字中找到字符串出現的那些行。你的程序還需支持大小寫敏感選項:當選項打開時,表示同一個字母的大寫和小寫看作不同的字符;當選項關閉時,表示同一個字母的大寫和小寫看作相同的字符。

輸入格式

  輸入的第一行包含一個字符串S,由大小寫英文字母組成。
  第二行包含一個數字,表示大小寫敏感的選項,當數字為0時表示大小寫不敏感,當數字為1時表示大小寫敏感。
  第三行包含一個整數n,表示給出的文字的行數。
  接下來n行,每行包含一個字符串,字符串由大小寫英文字母組成,不含空格和其他字符。

輸出格式

  輸出多行,每行包含一個字符串,按出現的順序依次給出那些包含了字符串S的行。

樣例輸入

Hello
1
5
HelloWorld
HiHiHelloHiHi
GrepIsAGreatTool
HELLO
HELLOisNOTHello

樣例輸出

HelloWorld
HiHiHelloHiHi
HELLOisNOTHello

樣例說明

  在上面的樣例中,第四個字符串雖然也是Hello,但是大小寫不正確。如果將輸入的第二行改為0,則第四個字符串應該輸出。

評測用例規模與約定

  1<=n<=100,每個字符串的長度不超過100。

 

問題描述

試題編號:

201409-4

試題名稱:

最優配餐

時間限制:

1.0s

內存限制:

256.0MB

問題描述:

問題描述

  棟棟最近開了一家餐飲連鎖店,提供外賣服務。隨着連鎖店越來越多,怎么合理的給客戶送餐成為了一個急需解決的問題。
  棟棟的連鎖店所在的區域可以看成是一個n×n的方格圖(如下圖所示),方格的格點上的位置上可能包含棟棟的分店(綠色標注)或者客戶(藍色標注),有一些格點是不能經過的(紅色標注)。
  方格圖中的線表示可以行走的道路,相鄰兩個格點的距離為1。棟棟要送餐必須走可以行走的道路,而且不能經過紅色標注的點。


  送餐的主要成本體現在路上所花的時間,每一份餐每走一個單位的距離需要花費1塊錢。每個客戶的需求都可以由棟棟的任意分店配送,每個分店沒有配送總量的限制。
  現在你得到了棟棟的客戶的需求,請問在最優的送餐方式下,送這些餐需要花費多大的成本。

輸入格式

  輸入的第一行包含四個整數n, m, k, d,分別表示方格圖的大小、棟棟的分店數量、客戶的數量,以及不能經過的點的數量。
  接下來m行,每行兩個整數xi, yi,表示棟棟的一個分店在方格圖中的橫坐標和縱坐標。
  接下來k行,每行三個整數xi, yi, ci,分別表示每個客戶在方格圖中的橫坐標、縱坐標和訂餐的量。(注意,可能有多個客戶在方格圖中的同一個位置)
  接下來d行,每行兩個整數,分別表示每個不能經過的點的橫坐標和縱坐標。

輸出格式

  輸出一個整數,表示最優送餐方式下所需要花費的成本。

樣例輸入

10 2 3 3
1 1
8 8
1 5 1
2 3 3
6 7 2
1 2
2 2
6 8

樣例輸出

29

評測用例規模與約定

  前30%的評測用例滿足:1<=n <=20。
  前60%的評測用例滿足:1<=n<=100。
  所有評測用例都滿足:1<=n<=1000,1<=m, k, d<=n^2。可能有多個客戶在同一個格點上。每個客戶的訂餐量不超過1000,每個客戶所需要的餐都能被送到。

 

問題描述

試題編號:

201409-5

試題名稱:

拼圖

時間限制:

3.0s

內存限制:

256.0MB

問題描述:

問題描述

  給出一個n×m的方格圖,現在要用如下L型的積木拼到這個圖中,使得方格圖正好被拼滿,請問總共有多少種拼法。其中,方格圖的每一個方格正好能放積木中的一塊。積木可以任意旋轉。

輸入格式

  輸入的第一行包含兩個整數n, m,表示方格圖的大小。

輸出格式

  輸出一行,表示可以放的方案數,由於方案數可能很多,所以請輸出方案數除以1,000,000,007的余數。

樣例輸入

6 2

樣例輸出

4

樣例說明

  四種拼法如下圖所示:

評測用例規模與約定

  在評測時將使用10個評測用例對你的程序進行評測。
  評測用例1和2滿足:1<=n<=30,m=2。
  評測用例3和4滿足:1<=n, m<=6。
  評測用例5滿足:1<=n<=100,1<=m<=6。
  評測用例6和7滿足:1<=n<=1000,1<=m<=6。
  評測用例8、9和10滿足:1<=n<=10^15,1<=m<=7。

 

問題描述

試題編號:

201403-2

試題名稱:

窗口

時間限制:

1.0s

內存限制:

256.0MB

問題描述:

問題描述

  在某圖形操作系統中,有 N 個窗口,每個窗口都是一個兩邊與坐標軸分別平行的矩形區域。窗口的邊界上的點也屬於該窗口。窗口之間有層次的區別,在多於一個窗口重疊的區域里,只會顯示位於頂層的窗口里的內容。
  當你點擊屏幕上一個點的時候,你就選擇了處於被點擊位置的最頂層窗口,並且這個窗口就會被移到所有窗口的最頂層,而剩余的窗口的層次順序不變。如果你點擊的位置不屬於任何窗口,則系統會忽略你這次點擊。
  現在我們希望你寫一個程序模擬點擊窗口的過程。

輸入格式

  輸入的第一行有兩個正整數,即 N 和 M。(1 ≤ N ≤ 10,1 ≤ M ≤ 10)
  接下來 N 行按照從最下層到最頂層的順序給出 N 個窗口的位置。 每行包含四個非負整數 x1, y1, x2, y2,表示該窗口的一對頂點坐標分別為 (x1, y1) 和 (x2, y2)。保證 x1 < x2,y1 2。
  接下來 M 行每行包含兩個非負整數 x, y,表示一次鼠標點擊的坐標。
  題目中涉及到的所有點和矩形的頂點的 x, y 坐標分別不超過 2559 和  1439。

輸出格式

  輸出包括 M 行,每一行表示一次鼠標點擊的結果。如果該次鼠標點擊選擇了一個窗口,則輸出這個窗口的編號(窗口按照輸入中的順序從 1 編號到 N);如果沒有,則輸出"IGNORED"(不含雙引號)。

樣例輸入

3 4
0 0 4 4
1 1 5 5
2 2 6 6
1 1
0 0
4 4
0 5

樣例輸出

2
1
1
IGNORED

樣例說明

  第一次點擊的位置同時屬於第 1 和第 2 個窗口,但是由於第 2 個窗口在上面,它被選擇並且被置於頂層。
  第二次點擊的位置只屬於第 1 個窗口,因此該次點擊選擇了此窗口並將其置於頂層。現在的三個窗口的層次關系與初始狀態恰好相反了。
  第三次點擊的位置同時屬於三個窗口的范圍,但是由於現在第 1 個窗口處於頂層,它被選擇。
  最后點擊的 (0, 5) 不屬於任何窗口。

 

問題描述

試題編號:

201403-3

試題名稱:

命令行選項

時間限制:

1.0s

內存限制:

256.0MB

問題描述:

問題描述

  請你寫一個命令行分析程序,用以分析給定的命令行里包含哪些選項。每個命令行由若干個字符串組成,它們之間恰好由一個空格分隔。這些字符串中的第一個為該命令行工具的名字,由小寫字母組成,你的程序不用對它進行處理。在工具名字之后可能會包含若干選項,然后可能會包含一 些不是選項的參數。
  選項有兩類:帶參數的選項和不帶參數的選項。一個合法的無參數選項的形式是一個減號后面跟單個小寫字母,如"-a" 或"-b"。而帶參數選項則由兩個由空格分隔的字符串構成,前者的格式要求與無參數選項相同,后者則是該選項的參數,是由小寫字母,數字和減號組成的非空字符串。
  該命令行工具的作者提供給你一個格式字符串以指定他的命令行工具需要接受哪些選項。這個字符串由若干小寫字母和冒號組成,其中的每個小寫字母表示一個該程序接受的選項。如果該小寫字母后面緊跟了一個冒號,它就表示一個帶參數的選項,否則則為不帶參數的選項。例如, "ab:m:" 表示該程序接受三種選項,即"-a"(不帶參數),"-b"(帶參數), 以及"-m"(帶參數)。
  命令行工具的作者准備了若干條命令行用以測試你的程序。對於每個命令行,你的工具應當一直向后分析。當你的工具遇到某個字符串既不是合法的選項,又不是某個合法選項的參數時,分析就停止。命令行剩余的未分析部分不構成該命令的選項,因此你的程序應當忽略它們。

輸入格式

  輸入的第一行是一個格式字符串,它至少包含一個字符,且長度不超過 52。格式字符串只包含小寫字母和冒號,保證每個小寫字母至多出現一次,不會有兩個相鄰的冒號,也不會以冒號開頭。
  輸入的第二行是一個正整數 N(1 ≤ N ≤ 20),表示你需要處理的命令行的個數。
  接下來有 N 行,每行是一個待處理的命令行,它包括不超過 256 個字符。該命令行一定是若干個由單個空格分隔的字符串構成,每個字符串里只包含小寫字母,數字和減號。

輸出格式

  輸出有 N 行。其中第 i 行以"Case i:" 開始,然后應當有恰好一個空格,然后應當按照字母升序輸出該命令行中用到的所有選項的名稱,對於帶參數的選項,在輸出它的名稱之后還要輸出它的參數。如果一個選項在命令行中出現了多次,只輸出一次。如果一個帶參數的選項在命令行中出 現了多次,只輸出最后一次出現時所帶的參數。

樣例輸入

albw:x
4
ls -a -l -a documents -b
ls
ls -w 10 -x -w 15
ls -a -b -c -d -e -l

樣例輸出

Case 1: -a -l
Case 2:
Case 3: -w 15 -x
Case 4: -a -b

 

問題描述

試題編號:

201403-4

試題名稱:

無線網絡

時間限制:

1.0s

內存限制:

256.0MB

問題描述:

問題描述

  目前在一個很大的平面房間里有 n 個無線路由器,每個無線路由器都固定在某個點上。任何兩個無線路由器只要距離不超過 r 就能互相建立網絡連接。
  除此以外,另有 m 個可以擺放無線路由器的位置。你可以在這些位置中選擇至多 k 個增設新的路由器。
  你的目標是使得第 1 個路由器和第 2 個路由器之間的網絡連接經過盡量少的中轉路由器。請問在最優方案下中轉路由器的最少個數是多少?

輸入格式

  第一行包含四個正整數 n,m,k,r。(2 ≤ n ≤ 100,1 ≤ k ≤ m ≤ 100, 1 ≤ r ≤ 108)。
  接下來 n 行,每行包含兩個整數 xi 和 yi,表示一個已經放置好的無線 路由器在 (xi, yi) 點處。輸入數據保證第 1 和第 2 個路由器在僅有這 n 個路由器的情況下已經可以互相連接(經過一系列的中轉路由器)。
  接下來 m 行,每行包含兩個整數 xi 和 yi,表示 (xi, yi) 點處可以增設 一個路由器。
  輸入中所有的坐標的絕對值不超過 108,保證輸入中的坐標各不相同。

輸出格式

  輸出只有一個數,即在指定的位置中增設 k 個路由器后,從第 1 個路 由器到第 2 個路由器最少經過的中轉路由器的個數。

樣例輸入

5 3 1 3
0 0
5 5
0 3
0 5
3 5
3 3
4 4
3 0

樣例輸出

2

 

問題描述

試題編號:

201403-5

試題名稱:

任務調度

時間限制:

1.0s

內存限制:

256.0MB

問題描述:

問題描述

  有若干個任務需要在一台機器上運行。它們之間沒有依賴關系,因此 可以被按照任意順序執行。
  該機器有兩個 CPU 和一個 GPU。對於每個任務,你可以為它分配不 同的硬件資源:
  1. 在單個 CPU 上運行。
  2. 在兩個 CPU 上同時運行。
  3. 在單個 CPU 和 GPU 上同時運行。
  4. 在兩個 CPU 和 GPU 上同時運行。
  一個任務開始執行以后,將會獨占它所用到的所有硬件資源,不得中 斷,直到執行結束為止。第 i 個任務用單個 CPU,兩個 CPU,單個 CPU 加 GPU,兩個 CPU 加 GPU 運行所消耗的時間分別為 ai,bi,ci 和 di
  現在需要你計算出至少需要花多少時間可以把所有給定的任務完成。

輸入格式

  輸入的第一行只有一個正整數 n(1 ≤ n ≤ 40), 是總共需要執行的任 務個數。
  接下來的 n 行每行有四個正整數 ai, bi, ci, di(ai, bi, ci, di 均不超過 10), 以空格隔開。

輸出格式

  輸出只有一個整數,即完成給定的所有任務所需的最少時間。

樣例輸入

3
4 4 2 2
7 4 7 4
3 3 3 3

樣例輸出

7

樣例說明

  有很多種調度方案可以在 7 個時間單位里完成給定的三個任務,以下是其中的一種方案:
  同時運行第一個任務(單 CPU 加上 GPU)和第三個任務(單 CPU), 它們分別在時刻 2 和時刻 3 完成。在時刻 3 開始雙 CPU 運行任務 2,在 時刻 7 完成。

 

問題描述

試題編號:

201312-1

試題名稱:

出現次數最多的數

時間限制:

1.0s

內存限制:

256.0MB

問題描述:

問題描述

  給定n個正整數,找出它們中出現次數最多的數。如果這樣的數有多個,請輸出其中最小的一個。

輸入格式

  輸入的第一行只有一個正整數n(1 ≤ n ≤ 1000),表示數字的個數。
  輸入的第二行有n個整數s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相鄰的數用空格分隔。

輸出格式

  輸出這n個次數中出現次數最多的數。如果這樣的數有多個,輸出其中最小的一個。

樣例輸入

6
10 1 10 20 30 20

樣例輸出

10

 

問題描述

試題編號:

201312-2

試題名稱:

ISBN號碼

時間限制:

1.0s

內存限制:

256.0MB

問題描述:

問題描述

  每一本正式出版的圖書都有一個ISBN號碼與之對應,ISBN碼包括9位數字、1位識別碼和3位分隔符,其規定格式如“x-xxx-xxxxx-x”,其中符號“-”是分隔符(鍵盤上的減號),最后一位是識別碼,例如0-670-82162-4就是一個標准的ISBN碼。ISBN碼的首位數字表示書籍的出版語言,例如0代表英語;第一個分隔符“-”之后的三位數字代表出版社,例如670代表維京出版社;第二個分隔之后的五位數字代表該書在出版社的編號;最后一位為識別碼。
  識別碼的計算方法如下:
  首位數字乘以1加上次位數字乘以2……以此類推,用所得的結果mod 11,所得的余數即為識別碼,如果余數為10,則識別碼為大寫字母X。例如ISBN號碼0-670-82162-4中的識別碼4是這樣得到的:對067082162這9個數字,從左至右,分別乘以1,2,…,9,再求和,即0×1+6×2+……+2×9=158,然后取158 mod 11的結果4作為識別碼。
  編寫程序判斷輸入的ISBN號碼中識別碼是否正確,如果正確,則僅輸出“Right”;如果錯誤,則輸出是正確的ISBN號碼。

輸入格式

  輸入只有一行,是一個字符序列,表示一本書的ISBN號碼(保證輸入符合ISBN號碼的格式要求)。

輸出格式

  輸出一行,假如輸入的ISBN號碼的識別碼正確,那么輸出“Right”,否則,按照規定的格式,輸出正確的ISBN號碼(包括分隔符“-”)。

樣例輸入

0-670-82162-4

樣例輸出

Right

樣例輸入

0-670-82162-0

樣例輸出

0-670-82162-4

 

問題描述

試題編號:

201312-3

試題名稱:

最大的矩形

時間限制:

1.0s

內存限制:

256.0MB

問題描述:

問題描述

  在橫軸上放了n個相鄰的矩形,每個矩形的寬度是1,而第i(1 ≤ i ≤ n)個矩形的高度是hi。這n個矩形構成了一個直方圖。例如,下圖中六個矩形的高度就分別是3, 1, 6, 5, 2, 3。



  請找出能放在給定直方圖里面積最大的矩形,它的邊要與坐標軸平行。對於上面給出的例子,最大矩形如下圖所示的陰影部分,面積是10。

輸入格式

  第一行包含一個整數n,即矩形的數量(1 ≤ n ≤ 1000)。
  第二行包含n 個整數h1, h2, … , hn,相鄰的數之間由空格分隔。(1 ≤ hi ≤ 10000)。hi是第i個矩形的高度。

輸出格式

  輸出一行,包含一個整數,即給定直方圖內的最大矩形的面積。

樣例輸入

6
3 1 6 5 2 3

樣例輸出

10

 

問題描述

試題編號:

201312-4

試題名稱:

有趣的數

時間限制:

1.0s

內存限制:

256.0MB

問題描述:

問題描述

  我們把一個數稱為有趣的,當且僅當:
  1. 它的數字只包含0, 1, 2, 3,且這四個數字都出現過至少一次。
  2. 所有的0都出現在所有的1之前,而所有的2都出現在所有的3之前。
  3. 最高位數字不為0。
  因此,符合我們定義的最小的有趣的數是2013。除此以外,4位的有趣的數還有兩個:2031和2301。
  請計算恰好有n位的有趣的數的個數。由於答案可能非常大,只需要輸出答案除以1000000007的余數。

輸入格式

  輸入只有一行,包括恰好一個正整數n (4 ≤ n ≤ 1000)。

輸出格式

  輸出只有一行,包括恰好n 位的整數中有趣的數的個數除以1000000007的余數。

樣例輸入

4

樣例輸出

3

 

問題描述

試題編號:

201312-5

試題名稱:

I’m stuck!

時間限制:

1.0s

內存限制:

256.0MB

問題描述:

問題描述

  給定一個R行C列的地圖,地圖的每一個方格可能是'#', '+', '-', '|', '.', 'S', 'T'七個字符中的一個,分別表示如下意思:
  '#': 任何時候玩家都不能移動到此方格;
  '+': 當玩家到達這一方格后,下一步可以向上下左右四個方向相鄰的任意一個非'#'方格移動一格;
  '-': 當玩家到達這一方格后,下一步可以向左右兩個方向相鄰的一個非'#'方格移動一格;
  '|': 當玩家到達這一方格后,下一步可以向上下兩個方向相鄰的一個非'#'方格移動一格;
  '.': 當玩家到達這一方格后,下一步只能向下移動一格。如果下面相鄰的方格為'#',則玩家不能再移動;
  'S': 玩家的初始位置,地圖中只會有一個初始位置。玩家到達這一方格后,下一步可以向上下左右四個方向相鄰的任意一個非'#'方格移動一格;
  'T': 玩家的目標位置,地圖中只會有一個目標位置。玩家到達這一方格后,可以選擇完成任務,也可以選擇不完成任務繼續移動。如果繼續移動下一步可以向上下左右四個方向相鄰的任意一個非'#'方格移動一格。
  此外,玩家不能移動出地圖。
  請找出滿足下面兩個性質的方格個數:
  1. 玩家可以從初始位置移動到此方格;
  2. 玩家不可以從此方格移動到目標位置。

輸入格式

  輸入的第一行包括兩個整數R 和C,分別表示地圖的行和列數。(1 ≤ R, C ≤ 50)。
  接下來的R行每行都包含C個字符。它們表示地圖的格子。地圖上恰好有一個'S'和一個'T'。

輸出格式

  如果玩家在初始位置就已經不能到達終點了,就輸出“I'm stuck!”(不含雙引號)。否則的話,輸出滿足性質的方格的個數。

樣例輸入

5 5
--+-+
..|#.
..|##
S-+-T
####.

樣例輸出

2

樣例說明

  如果把滿足性質的方格在地圖上用'X'標記出來的話,地圖如下所示:
  --+-+
  ..|#X
  ..|##
  S-+-T
  ####X

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM