1. 程式人生 > >2017第八屆藍橋杯 C/C++C組真題及題解

2017第八屆藍橋杯 C/C++C組真題及題解

1. 標題:貪吃蛇長度

+-------------------------------------------------+
|                                                 |
|    H######                      ####            |
|          #                      #  #            |
|          #                      #  #            |
|          #     ####             #  #            |
|          #     #  #             #  #            |
|          ######@###             #  #            |
|                #       ####     #  #            |
|                #       #  #     #  #            |
|            ####@#######@###     #  #            |
|            #   #       #        #  #            |
| T          #####       #        #  #   ##       |
| #                      #      ###  ### ##       |
| ################       #      #      ####       |
|                #       #      #         #       |
|   ##############       #######@##########       |
|   #                         ###                 |
|   ###########################                   |
+-------------------------------------------------+

    小明在爺爺的私人收藏館裡找到一臺老式電腦。居然沒有圖形介面,只能用控制檯程式設計。經過小明的一陣摸索,神奇地設計出了控制檯上的貪食蛇遊戲。

    如上圖,是遊戲時畫面截圖。
    其中,H表示蛇頭,T表示蛇尾。#表示蛇的身體,@表示身體交叉重疊的地方。
    你能說出現在的貪吃蛇長度是多少嗎?

    其實,只要數出#的數目算1,數出@的數目,算2,再加上頭尾各算1就計算好了。
    人工數一下?太累眼睛了,聰明的你為什麼不讓計算機幫忙呢?
    本題的要求就是: 請填寫上圖中貪食蛇的長度是多少?

    注意:需要提交的是一個整數,不要新增任何多餘內容(比如說明或註釋)

2. 標題:興趣小組
為豐富同學們的業餘文化生活,某高校學生會創辦了3個興趣小組
(以下稱A組,B組,C組)。
每個小組的學生名單分別在【A.txt】,【B.txt】和【C.txt】中。
每個檔案中儲存的是學生的學號。

由於工作需要,我們現在想知道:
    既參加了A組,又參加了B組,但是沒有參加C組的同學一共有多少人?

請你統計該數字並通過瀏覽器提交答案。

注意:答案是一個整數,不要提交任何多餘的內容。

--------------------
笨笨有話說:
    哇塞!數字好多啊!一眼望過去就能發現相同的,好像沒什麼指望。
不過,可以排序啊,要是每個檔案都是有序的,那就好多了。

歪歪有話說:
    排什麼序啊,這麼幾行數字對計算機不是太輕鬆了嗎?
    我看著需求怎麼和中學學過的集合很像啊.....
--------------------

A. txt:

12894792, 92774113, 59529208, 22962224, 02991600, 83340521, 87365045, 
40818286, 16400628, 39475245, 55933381, 76940287, 61366748, 95631228, 
17102313, 50682833, 61562613, 87002524, 83062019, 51743442, 61977890, 
32010762, 69680621, 87179571, 81761697, 32364296, 07833271, 36198035, 
26588918, 84046668, 43059468, 73191775, 56794101, 00454780, 11141030, 
10008994, 35072237, 44945158, 53959980, 75758119, 18560273, 35801494, 
42102550, 22496415, 03981786, 34593672, 13074905, 07733442, 42374678, 
23452507, 98586743, 30771281, 17703080, 52123562, 05898131, 56698981, 
90758589, 18238802, 18217979, 04511837, 75682969, 31135682, 55379006, 
42224598, 98263070, 40228312, 28924663, 11580163, 25686441, 45944028, 
96731602, 53675990, 03854194, 14858183, 16866794, 40677007, 73141512, 
32317341, 56641725, 43123040, 15201174, 62389950, 72887083, 76860787, 
61046319, 06923746, 17874548, 46028629, 10577743, 48747364, 05328780, 
59855415, 60965266, 20592606, 14471207, 70896866, 46938647, 33575820, 
53426294, 56093931, 51326542, 94050481, 80114017, 33010503, 72971538, 
22407422, 17305672, 78974338, 93209260, 83461794, 41247821, 26118061, 
10657376, 42198057, 15338224, 50284714, 32232841, 26716521, 76048344, 
23676625, 62897700, 69296551, 59653393, 38704390, 48481614, 69782897, 
26850668, 37471053, 88720989, 51010849, 94951571, 60024611, 29808329, 
70377786, 13899299, 09683688, 58218284, 46792829, 97221709, 45286643, 
48158629, 57367208, 26903401, 76900414, 87927040, 09926730, 01508757, 
15101101, 62491840, 43802529, 

B. txt:

44894050, 34662733, 44141729, 92774113, 99208727, 91919833, 23727681, 
10003409, 55933381, 54443275, 13584702, 96523685, 50682833, 61562613, 
62380975, 20311684, 93200452, 23101945, 42192880, 28992561, 18460278, 
19186537, 58465301, 01111066, 62680429, 23721241, 20277631, 91708977, 
57514737, 03981786, 81541612, 07346443, 93154608, 19709455, 37446968, 
17703080, 72378958, 66200696, 30610382, 89586343, 33152171, 67040930, 
35696683, 63242065, 99948221, 96233367, 52593493, 98263070, 01418023, 
74816705, 89375940, 58405334, 96731602, 84089545, 16866794, 94737626, 
01673442, 70548494, 13638168, 08163691, 11106566, 64375392, 40267902, 
00897705, 56447313, 54532235, 94738425, 66642634, 83219544, 40546096, 
66924991, 20592606, 96037590, 73434467, 70896866, 91025618, 57892091, 
08487641, 32500082, 84412833, 23311447, 38380409, 79957822, 72971538, 
69645784, 91863314, 73099909, 93209260, 83461794, 81378487, 30423273, 
22233715, 32232841, 26716521, 03511221, 29196547, 58263562, 56233305, 
52547525, 55812835, 87253244, 52484232, 80837360, 94098464, 52028151, 
53267501, 66381929, 84381316, 59788467, 09683688, 67082008, 71605255, 
80654064, 21434307, 45286643, 76556656, 82465821, 57367208, 79218980, 
48460468, 59170479, 46046391, 43043164, 96544490, 83340521, 70837892, 
18926791, 40818286, 28936302, 11489524, 51031183, 73860337, 13241219, 
09025448, 10718828, 76360986, 26031606, 76558053, 97726139, 46473415, 
48406387, 23625539, 86756012, 35164187, 49161302, 78082834, 35072237, 
08602486, 29815841, 56562216, 77684187, 81751704, 20160464, 50407962, 
27786415, 19893526, 00934129, 37759498, 52636463, 25666982, 43262852, 
38393436, 02581136, 29323250, 56950657, 05898131, 95286262, 75574581, 
54057961, 06703896, 90758589, 57782642, 34492535, 41919697, 06395464, 
10993500, 81212949, 34017532, 69569396, 99009936, 57129610, 67401593, 
71044018, 62076698, 29533873, 71936325, 86874388, 26545032, 35695544, 
30433724, 53127345, 72887083, 25390873, 63711546, 06923746, 27783723, 
33199575, 35929698, 16491251, 18276792, 62744775, 92096155, 06336570, 
56141974, 73007273, 31416832, 00171057, 64176982, 46938647, 58460388, 
69972026, 73724304, 27435484, 51568616, 15531822, 47788699, 11818851, 
41594694, 83561325, 43107163, 56965375, 10557343, 26118061, 74650126, 
90076467, 10657376, 49901436, 03425162, 61164599, 15797769, 05427896, 
14444084, 36795868, 18079449, 59653393, 72942548, 06763077, 33895610, 
94892653, 12085268, 65174140, 79567366, 23020126, 74290047, 13498869, 
21696323, 27724594, 54941003, 38229841, 07050068, 

C. txt:

13404901, 39952424, 47847739, 94939581, 13809950, 70966043, 11161555, 
17102313, 47079425, 50682833, 74154313, 61562613, 93200452, 37103342, 
18479435, 32502597, 36198035, 54210010, 73191775, 48358178, 85544503, 
05996766, 54651623, 52113220, 27465181, 23871783, 22496415, 54107041, 
65899605, 56528700, 82671109, 61176034, 42374678, 51612628, 63329997, 
56591652, 04552733, 12789324, 89586343, 51935014, 38611966, 43916409, 
70996050, 98263070, 01418023, 65345049, 21734275, 76846198, 71506230, 
00833171, 67128139, 41367555, 64769510, 44010700, 16475199, 93164325, 
09386162, 95324041, 80688223, 67629139, 79552617, 76219736, 50368644, 
45096021, 54972488, 63779011, 28862942, 73145521, 74078605, 66924991, 
12806850, 02171001, 70896866, 73434467, 08487641, 44415025, 32500082, 
84412833, 83896188, 52243759, 49191410, 38744339, 48079796, 44937032, 
06267501, 81866886, 38575984, 25978688, 78974338, 41247821, 12356966, 
64842303, 79127158, 02366944, 68000570, 12426275, 96409230, 00705972, 
08266503, 83820884, 08831807, 43273308, 23216105, 29196547, 95160161, 
05553537, 52182214, 32641346, 91553427, 24436506, 77433749, 01979664, 
52028151, 88985343, 01761499, 76203088, 63237368, 23405334, 59788467, 
09683688, 67755443, 29946533, 12053603, 00437479, 15200030, 45286643, 
93537527, 82465821, 57367208, 53899751, 15354933, 97760830, 68933762, 
80220545, 01892750, 39868288, 21524323, 69716610, 65083815, 78048499, 
03227391, 83340521, 87365045, 71720254, 51031183, 89168555, 08503028, 
37086236, 25103057, 87002524, 22808816, 80928090, 90741678, 15993372, 
99117082, 49938176, 21755083, 86903426, 87830263, 53959980, 75758119, 
59781354, 58679691, 25666982, 56307643, 47180521, 62776522, 78136608, 
44882734, 90758589, 08075999, 66303819, 23480347, 11580163, 87080118, 
18329165, 92514163, 89404632, 92377859, 03912329, 17499963, 59699979, 
79876366, 63894807, 37857001, 86003935, 90087123, 29433345, 80298948, 
61531153, 61046319, 37839841, 19421134, 48747364, 35196916, 62484573, 
59907079, 36845702, 21631642, 72739317, 26283700, 80114017, 76639390, 
29154110, 35159758, 47788699, 11818851, 56520669, 36396767, 36031167, 
83817428, 10657376, 90076467, 14676452, 11024560, 16327605, 76048344, 
14444084, 95452011, 99612346, 65172562, 84813675, 88618282, 38704390, 
27998014, 63859011, 33787505, 60024611, 16229880, 13899299, 35240335, 
29173227, 45036451, 66177893, 82658333, 43100730, 44520187, 74290047, 
85013538, 09926730, 27724594, 95148523, 20503000, 64390907, 26006953, 
98116293, 97457666, 29017396, 04634371, 70791589, 

3. 標題:算式900
小明的作業本上有道思考題:看下面的算式:

  (□□□□-□□□□)*□□=900

  其中的小方塊代表0~9的數字,這10個方塊剛好包含了0~9中的所有數字。
  注意:0不能作為某個數字的首位。

小明經過幾天的努力,終於做出了答案!如下:
(5012-4987)*36=900

用計算機搜尋後,發現還有另外一個解,本題的任務就是:請你算出這另外的一個解。

注意:提交的格式需要與示例嚴格一致;
      括號及運算子號不要用中文輸入法;
      整個算式中不能包含空格。

注意:機器評卷,不要填寫任何多餘的內容,比如說明文字。

4. 標題:承壓計算
X星球的高科技實驗室中整齊地堆放著某批珍貴金屬原料。

每塊金屬原料的外形、尺寸完全一致,但重量不同。
金屬材料被嚴格地堆放成金字塔形。

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

其中的數字代表金屬塊的重量(計量單位較大)。
最下一層的X代表30臺極高精度的電子秤。

假設每塊原料的重量都十分精確地平均落在下方的兩個金屬塊上,
最後,所有的金屬塊的重量都嚴格精確地平分落在最底層的電子秤上。
電子秤的計量單位很小,所以顯示的數字很大。

工作人員發現,其中讀數最小的電子秤的示數為:2086458231

請你推算出:讀數最大的電子秤的示數為多少?

注意:需要提交的是一個整數,不要填寫任何多餘的內容。

--------------------------------------------
笨笨有話說:
    不斷的除2,加到下面,除2,加到下面,.... 不會浮點精度溢位吧?
歪歪有話說:
    怕除不開還不好辦, 把每個數字擴大一定的倍數不就好了。

5. 標題: 楊輝三角
楊輝三角也叫帕斯卡三角,在很多數量關係中可以看到,十分重要。

第0行:           1
第1行:          1 1
第2行:         1 2 1
第3行:        1 3 3 1
第4行:       1 4 6 4 1
....

兩邊的元素都是1, 中間的元素是左上角的元素與右上角的元素和。

我們約定,行號,列號都從0計數。
所以: 第6行的第2個元素是15,第3個元素是20

直觀地看,需要開闢一個二維陣列,其實一維陣列也可以勝任。
如下程式就是用一維陣列“騰挪”的解法。

// 楊輝三角的第row行,第col列 
long long f(int row, int col){
if(row<2) return 1;
if(col==0) return 1;
if(col==row) return 1;

long long a[1024];
a[0]=1;
a[1]=1;
int p = 2;
int q;

while(p<=row){
a[p] = 1;
for( _________________ ) a[q] = a[q] + a[q-1]; //填空
p++;
}

return a[col];
}
int main()
{
printf("%d\n", f(6,2));
printf("%d\n", f(6,3));
printf("%lld\n", f(40,20));
return 0;
}

請仔細分析原始碼,並完成劃線部分缺少的程式碼。

注意:只提交缺少的程式碼,不要提交已有的程式碼和符號。也不要提交說明性文字。

6. 標題:最大公共子串
最大公共子串長度問題就是:
求兩個串的所有子串中能夠匹配上的最大長度是多少。

比如:"abcdkkk" 和 "baabcdadabc",
可以找到的最長的公共子串是"abcd",所以最大公共子串長度為4。

下面的程式是採用矩陣法進行求解的,這對串的規模不大的情況還是比較有效的解法。
請分析該解法的思路,並補全劃線部分缺失的程式碼。

#include <stdio.h>
#include <string.h>
#define N 256
int f(const char* s1, const char* s2)
{
int a[N][N];
int len1 = strlen(s1);
int len2 = strlen(s2);
int i,j;
memset(a,0,sizeof(int)*N*N);
int max = 0;
for(i=1; i<=len1; i++){
for(j=1; j<=len2; j++){
if(s1[i-1]==s2[j-1]) {
a[i][j] = __________________________;  //填空
if(a[i][j] > max) max = a[i][j];
}
}
}
return max;
}
int main()
{
printf("%d\n", f("abcdkkk", "baabcdadabc"));
return 0;
}

注意:只提交缺少的程式碼,不要提交已有的程式碼和符號。也不要提交說明性文字。

7. 標題: Excel地址
Excel單元格的地址表示很有趣,它使用字母來表示列號。
比如,
A表示第1列,
B表示第2列,
Z表示第26列,
AA表示第27列,
AB表示第28列,
BA表示第53列,
....

當然Excel的最大列號是有限度的,所以轉換起來不難。
如果我們想把這種表示法一般化,可以把很大的數字轉換為很長的字母序列呢?

本題目既是要求對輸入的數字, 輸出其對應的Excel地址表示方式。

例如,
輸入:
26
則程式應該輸出:
Z

再例如,
輸入:
2054
則程式應該輸出:
BZZ

我們約定,輸入的整數範圍[1,2147483647]
資源約定:
峰值記憶體消耗(含虛擬機器) < 256M
CPU消耗  < 1000ms

請嚴格按要求輸出,不要畫蛇添足地列印類似:“請您輸入...” 的多餘內容。

注意:
main函式需要返回0;
只使用ANSI C/ANSI C++ 標準;
不要呼叫依賴於編譯環境或作業系統的特殊函式。
所有依賴的函式必須明確地在原始檔中 #include <xxx>
不能通過工程設定而省略常用標頭檔案。

提交程式時,注意選擇所期望的語言型別和編譯器型別。
------------------------------
笨笨有話說:
    這有點像進位制關係,又不完全是。好像末2位是以1當26,末3位是以1當26*26
歪歪有話說:
    要是從字母序列轉數字還好點,倒過來有點麻煩,不過計算機跑得快啊。

8. 標題:九宮幻方
    小明最近在教鄰居家的小朋友小學奧數,而最近正好講述到了三階幻方這個部分,三階幻方指的是將1~9不重複的填入一個3*3的矩陣當中,使得每一行、每一列和每一條對角線的和都是相同的。

    三階幻方又被稱作九宮格,在小學奧數裡有一句非常有名的口訣:“二四為肩,六八為足,左三右七,戴九履一,五居其中”,通過這樣的一句口訣就能夠非常完美的構造出一個九宮格來。

4 9 2
3 5 7
8 1 6

    有意思的是,所有的三階幻方,都可以通過這樣一個九宮格進行若干映象和旋轉操作之後得到。現在小明準備將一個三階幻方(不一定是上圖中的那個)中的一些數抹掉,交給鄰居家的小朋友來進行還原,並且希望她能夠判斷出究竟是不是隻有一個解。

    而你呢,也被小明交付了同樣的任務,但是不同的是,你需要寫一個程式~

輸入格式:
輸入僅包含單組測試資料。
每組測試資料為一個3*3的矩陣,其中為0的部分表示被小明抹去的部分。
對於100%的資料,滿足給出的矩陣至少能還原出一組可行的三階幻方。

輸出格式:
如果僅能還原出一組可行的三階幻方,則將其輸出,否則輸出“Too Many”(不包含引號)。

樣例輸入
0 7 2
0 5 0
0 3 0

樣例輸出
6 7 2
1 5 9
8 3 4

資源約定:
峰值記憶體消耗(含虛擬機器) < 256M
CPU消耗  < 1000ms

請嚴格按要求輸出,不要畫蛇添足地列印類似:“請您輸入...” 的多餘內容。

注意:
main函式需要返回0;
只使用ANSI C/ANSI C++ 標準;
不要呼叫依賴於編譯環境或作業系統的特殊函式。
所有依賴的函式必須明確地在原始檔中 #include <xxx>
不能通過工程設定而省略常用標頭檔案。

提交程式時,注意選擇所期望的語言型別和編譯器型別。
--------------
笨笨有話說:
    我最喜歡這類題目了。既然九宮幻方一共也沒有多少,我就不辭辛勞地一個一個寫出來好了。
也不能太過分,好歹用個數組。



9. 標題:拉馬車
小的時候,你玩過紙牌遊戲嗎?
有一種叫做“拉馬車”的遊戲,規則很簡單,卻很吸引小朋友。

其規則簡述如下:
假設參加遊戲的小朋友是A和B,遊戲開始的時候,他們得到的隨機的紙牌序列如下:
A方:[K, 8, X, K, A, 2, A, 9, 5, A]
B方:[2, 7, K, 5, J, 5, Q, 6, K, 4]

其中的X表示“10”,我們忽略了紙牌的花色。

從A方開始,A、B雙方輪流出牌。

當輪到某一方出牌時,他從自己的紙牌佇列的頭部拿走一張,放到桌上,並且壓在最上面一張紙牌上(如果有的話)。

此例中,遊戲過程:
A出K,B出2,A出8,B出7,A出X,此時桌上的序列為:

K,2,8,7,X

當輪到B出牌時,他的牌K與桌上的紙牌序列中的K相同,則把包括K在內的以及兩個K之間的紙牌都贏回來,放入自己牌的隊尾。注意:為了操作方便,放入牌的順序是與桌上的順序相反的。
此時,A、B雙方的手裡牌為:
A方:[K, A, 2, A, 9, 5, A]
B方:[5, J, 5, Q, 6, K, 4, K, X, 7, 8, 2, K]

贏牌的一方繼續出牌。也就是B接著出5,A出K,B出J,A出A,B出5,又贏牌了。
5,K,J,A,5
此時雙方手裡牌:
A方:[2, A, 9, 5, A]
B方:[Q, 6, K, 4, K, X, 7, 8, 2, K, 5, A, J, K, 5]

    注意:更多的時候贏牌的一方並不能把桌上的牌都贏走,而是拿走相同牌點及其中間的部分。但無論如何,都是贏牌的一方繼續出牌,有的時候剛一出牌又贏了,也是允許的。

    當某一方出掉手裡最後一張牌,但無法從桌面上贏取牌時,遊戲立即結束。

    對於本例的初始手牌情況下,最後A會輸掉,而B最後的手裡牌為:9K2A62KAX58K57KJ5

    本題的任務就是已知雙方初始牌序,計算遊戲結束時,贏的一方手裡的牌序。當遊戲無法結束時,輸出-1。

輸入為2行,2個串,分別表示A、B雙方初始手裡的牌序列。
輸出為1行,1個串,表示A先出牌,最後贏的一方手裡的牌序。

例如,
輸入:
96J5A898QA
6278A7Q973

則程式應該輸出:
2J9A7QA6Q6889977

再比如,
輸入:
25663K6X7448
J88A5KJXX45A

則程式應該輸出:
6KAJ458KXAX885XJ645

我們約定,輸入的串的長度不超過30
資源約定:
峰值記憶體消耗(含虛擬機器) < 256M
CPU消耗  < 1000ms

請嚴格按要求輸出,不要畫蛇添足地列印類似:“請您輸入...” 的多餘內容。

注意:
main函式需要返回0;
只使用ANSI C/ANSI C++ 標準;
不要呼叫依賴於編譯環境或作業系統的特殊函式。
所有依賴的函式必須明確地在原始檔中 #include <xxx>
不能通過工程設定而省略常用標頭檔案。

提交程式時,注意選擇所期望的語言型別和編譯器型別。
----------------------------
笨笨有話說:
    不斷刪除前邊的,又要後邊新增.... 如果用陣列,需要開一個大點的,請佛祖保佑在遊戲結束前,不會用到陣列的邊緣。
歪歪有話說:
    反正串也不長,不如每次操作都返回一個新的串。
默默有話說:
    我一般都不吱聲,這是典型的佇列結構,動態陣列最好,沒有?自己造一個唄!

10. 標題:圖形排版
    小明需要在一篇文件中加入 N 張圖片,其中第 i 張圖片的寬度是 Wi,高度是 Hi。  
假設紙張的寬度是 M,小明使用的文件編輯工具會用以下方式對圖片進行自動排版:

    1. 該工具會按照圖片順序,在寬度 M 以內,將盡可能多的圖片排在一行。該行的高度是行內最高的圖片的高度。例如在 M=10 的紙張上依次列印 3x4, 2x2, 3x3 三張圖片,則效果如下圖所示,這一行高度為4。(分割線以上為列標尺,分割線以下為排版區域;數字組成的矩形為第x張圖片佔用的版面)

0123456789
----------
111
111  333
11122333
11122333

    2. 如果當前行剩餘寬度大於0,並且小於下一張圖片,則下一張圖片會按比例縮放到寬度為當前行剩餘寬度(高度向上取整),然後放入當前行。例如再放入一張4x9的圖片,由於剩餘寬度是2,這張圖片會被壓縮到2x5,再被放入第一行的末尾。此時該行高度為5:

0123456789
----------
        44
111     44
111  33344
1112233344
1112233344

    3. 如果當前行剩餘寬度為0,該工具會從下一行開始繼續對剩餘的圖片進行排版,直到所有圖片都處理完畢。此時所有行的總高度和就是這 N 張圖片的排版高度。例如再放入11x1, 5x5, 3x4 的圖片後,效果如下圖所示,總高度為11:

0123456789
----------
        44
111     44
111  33344
1112233344
1112233344
5555555555
66666
66666777
66666777
66666777
66666777

    現在由於排版高度過高,圖片的先後順序也不能改變,小明只好從 N 張圖片中選擇一張刪除掉以降低總高度。他希望剩餘N-1張圖片按原順序的排版高度最低,你能求出最低高度是多少麼?

輸入:
第一行包含兩個整數 M 和 N,分別表示紙張寬度和圖片的數量。
接下來 N 行,每行2個整數Wi, Hi,表示第 i 個圖大小為 Wi*Hi。

對於30%的資料,滿足1<=N<=1000
對於100%的資料,滿足1<=N<=100000,1<=M, Wi, Hi<=100

輸出:
一個整數,表示在刪除掉某一張圖片之後,排版高度最少能是多少。

樣例輸入:
4 3
2 2
2 3
2 2

樣例輸出:
2

另一個示例,
樣例輸入:
2 10
4 4
4 3
1 3
4 5
2 1
2 3
5 4
5 3
1 5
2 4

樣例輸出:
17

資源約定:
峰值記憶體消耗(含虛擬機器) < 256M
CPU消耗  < 2000ms

請嚴格按要求輸出,不要畫蛇添足地列印類似:“請您輸入...” 的多餘內容。

注意:
main函式需要返回0;
只使用ANSI C/ANSI C++ 標準;
不要呼叫依賴於編譯環境或作業系統的特殊函式。
所有依賴的函式必須明確地在原始檔中 #include <xxx>
不能通過工程設定而省略常用標頭檔案。

提交程式時,注意選擇所期望的語言型別和編譯器型別。

相關推薦

2017藍橋省賽c/c++ B

第一題 購物清單小明剛剛找到工作,老闆人很好,只是老闆夫人很愛購物。老闆忙的時候經常讓小明幫忙到商場代為購物。小明很厭煩,但又不好推辭。 這不,XX大促銷又來了!老闆夫人開出了長長的購物單,都是有打折優惠的。 小明也有個怪癖,不到萬不得已,從不刷卡,直接現金搞定。 現在小明

2017藍橋決賽(B)2.磁磚樣式

利用 分享 部分 span 裝飾 mage 整數 bool png 磁磚樣式 小明家的一面裝飾墻原來是 310 的小方格。 現在手頭有一批剛好能蓋住2個小方格的長方形瓷磚。 瓷磚只有兩種顏色:黃色和橙色。 小明想知道,對於這麽簡陋的原料,可以貼出多少種不同的花樣來。 小明有

2017藍橋決賽(B)4.發現環

之間 bound 維護 順序 ins 兩個 class () clas 描述 小明的實驗室有N臺電腦,編號1~N。原本這N臺電腦之間有N-1條數據鏈接相連,恰好構成一個樹形網絡。在樹形網絡上,任意兩臺電腦之間有唯一的路徑相連。 不過在最近一次維護網絡時,管理員誤操作使得某兩

藍橋Java語言B(省賽)

今天參加藍橋JAVA語言B組的競賽剛剛結束,把真題和大家分享一下。 1.煤球數目  (結果填空) 有一堆煤球,堆成三角稜錐形。具體: 第一層放1個, 第二層3個(排列成三角形), 第三層6個(排列成三角形), 第四層10個(排列成三角形), .... 如果一共有100

2017藍橋C/C++ B省賽-等差素數列

.... spa 素數表 等差數列 打出 span 註意 i++ shai 標題:等差素數列 2,3,5,7,11,13,....是素數序列。 類似:7,37,67,97,127,157 這樣完全由素數組成的等差數列,叫等差素數數列。 上邊的數列公差為30,長度為

2017藍橋C/C++ B省賽-購物單

藍橋杯 分享 com mage log 全選 nbsp alt -- 標題: 購物單 小明剛剛找到工作,老板人很好,只是老板夫人很愛購物。老板忙的時候經常讓小明幫忙到商場代為購物。小明很厭煩,但又不好推辭。 這不,XX大促銷又來了!老板夫人開出了長長的購物單,都

2017藍橋 A C/C++ 題解

1. (5')標題: 購物單    小明剛剛找到工作,老闆人很好,只是老闆夫人很愛購物。老闆忙的時候經常讓小明幫忙到商場代為購物。小明很厭煩,但又不好推辭。    這不,XX大促銷又來了!老闆夫人開出了長長的購物單,都是有打折優惠的。    小明也有個怪癖,不到萬不得已,從不

2017藍橋C/C++ BC語言解法---等差數列

標題:等差素數列 2,3,5,7,11,13,…是素數序列。 類似:7,37,67,97,127,157 這樣完全由素陣列成的等差數列,叫等差素數數列。 上邊的數列公差為30,長度為6。 2004年,格林與華人陶哲軒合作證明了:存在任意長度的素數等差數列。 這是數論領域一項驚人的成果

2017藍橋C/C++ )B --C檔案操作解法程式碼

標題: 購物單(C檔案操作解法及程式碼) 小明剛剛找到工作,老闆人很好,只是老闆夫人很愛購物。老闆忙的時候經常讓小明幫忙到商場代為購物。小明很厭煩,但又不好推辭。 這不,XX大促銷又來了!老闆夫人開出了長長的購物單,都是有打折優惠的。 小明也有個怪癖,不到萬不得已,從不刷卡,直接現金

2017藍橋C/C++)算式900--C語言解題思路和程式碼

標題:算式900 小明的作業本上有道思考題:看下面的算式: (□□□□-□□□□)*□□=900 其中的小方塊代表09的數字,這10個方塊剛好包含了09中的所有數字。 注意:0不能作為某個數字的首位。 小明經過幾天的努力,終於做出了答案!如下: (5012-4987

2017藍橋C/C++C貪吃蛇長度-C語言程式碼和思路

標題:貪吃蛇長度 ±------------------------------------------------+ | | | H###### #### | | # # # | | # # # | | # #### # # | | # # # # # | | #####

2017藍橋”國賽BC/C++ 個人題解

前言:我參加了今年第八屆的藍橋杯國賽,只拿了個優秀獎,傷心。官方也沒有公佈試題和答案,在網上搜索了很久都沒有找到藍橋杯國賽的題目。突然有了一個不自量力的想法,趁還有一點記憶,把題目記錄下來,並且附上自己的做法。第一題:36進位制題意:用類似16進位制的表示辦法,A表示10,B

2017藍橋試題(C/C++本科B)1-8

1.標題: 購物單    小明剛剛找到工作,老闆人很好,只是老闆夫人很愛購物。老闆忙的時候經常讓小明幫忙到商場代為購物。小明很厭煩,但又不好推辭。    這不,XX大促銷又來了!老闆夫人開出了長長的購物單,都是有打折優惠的。    小明也有個怪癖,不到萬不得已,從不刷卡,直接

2017藍橋 C/C++C題解

1. 標題:貪吃蛇長度 +-------------------------------------------------+ |                                                 | |    H######        

17年藍橋省賽(C語言B) 題解

最近 又從新做了一遍,主要是用程式碼實現.跑出答案...1:標題: 購物單    小明剛剛找到工作,老闆人很好,只是老闆夫人很愛購物。老闆忙的時候經常讓小明幫忙到商場代為購物。小明很厭煩,但又不好推辭。    這不,XX大促銷又來了!老闆夫人開出了長長的購物單,都是有打折優惠

算法筆記_204:藍橋軟件類決賽(Java語言C)

系統 主類 文字 新節點 origin pack log 破壞 src 目錄 1 好好學習 2 埃及分數 3 金蟬素數 4 橫向打印二叉樹 5 危險系數 6 公式求值 1 好好學習 湯姆跟爺爺來中國旅遊。一天,他幫助中國的小朋友貼標語。他負責貼的標語是分別寫在四

藍橋2017藍橋省賽B—PREV-40K倍區間

膜拜這位大佬 做法:首先統計字首和sum[i] 表示A1+A2+…+Ai.所以對於任意一段區間[l,r]的和就是sum[r]-sum[l-1].如果要保證這個區間和為K倍數就是:(sum[r]-sum[l-1])%k == 0.變形後就是:sum[r]%k==sum[l-1]%k,

藍橋軟體類省賽-C-A-1_猜年齡

/*【題目】 標題:猜年齡 小明帶兩個妹妹參加元宵燈會。別人問她們多大了,她們調皮地說:“我們倆的年齡之積是年齡之和的6倍”。 小明又補充說:“她們可不是雙胞胎,年齡差肯定也不超過8歲啊。

2017藍橋決賽之旅

       時間過得好快,四小時匆匆過去了。其實三個小時的時候就已經坐不住了,想跑。。再看題,看不懂,再檢查,不知道破綻在那裡。拿起麵包,狠狠地撕開咬了一口,拿過牛奶猛吸幾口。看看對面的強哥,笑了笑

2017藍橋Java省賽

第一題:購物單 小明剛剛找到工作,老闆人很好,只是老闆夫人很愛購物。老闆忙的時候經常讓小明幫忙到商場代為購物。小明很厭煩,但又不好推辭。 這不,XX大促銷又來了!老闆夫人開出了長長的購物單,都是有打折優惠的。  小明也有個怪癖,不到萬不得已,從不刷卡,直