1 PTA-算法設計與分析-AC原題 2 7-1 最大子列和問題 (20分) 3 給定K個整數組成的序列{ N1, N2, ..., NK },「連續子列」被定義爲{ Ni, Ni+1, ..., Nj },其中 1≤i≤j≤K。「最大子列和」則被定義爲全部連續子列元素的和中最大者。例如給定序列{ -2, 11, -4, 13, -5, -2 },其連續子列{ 11, -4, 13 }有最大的和20。現要求你編寫程序,計算給定整數序列的最大子列和。 4 本題旨在測試各類不一樣的算法在各類數據狀況下的表現。各組測試數據特色以下: 5 數據1:與樣例等價,測試基本正確性; 6 數據2:102個隨機整數; 7 數據3:103個隨機整數; 8 數據4:104個隨機整數; 9 數據5:105個隨機整數; 10 輸入格式: 11 輸入第1行給出正整數K (≤100000);第2行給出K個整數,其間以空格分隔。 12 輸出格式: 13 在一行中輸出最大子列和。若是序列中全部整數皆爲負數,則輸出0。 14 輸入樣例: 15 16 6 17 -2 11 -4 13 -5 -2 18 輸出樣例: 19 20 20 21 22 做者: DS課程組 23 單位: 浙江大學 24 時間限制: 50000 ms 25 內存限制: 64 MB 26 代碼長度限制: 16 KB 27 題目詳情 28 29 7-2 求素數個數 (30分) 30 求素數的個數。本題要求編寫一個程序,求1~n的素數個數。 要求至少給出兩種解法,對於相同的n,給出這兩種解法的結果,經過相關數據進行測試,目的是經過對比同一問題不一樣解法的絕對執行時間體會如何設計「好」的算法。 31 輸入格式: 32 輸入在一行中給出1個整數n(<= 10 000 000)。 33 輸出格式: 34 對每一組輸入,在一行中輸出1~n的素數個數。 35 輸入樣例1: 36 37 5 38 輸出樣例1: 39 40 3 41 輸入樣例2: 42 43 14 44 輸出樣例2: 45 46 6 47 48 做者: 李廷元 49 單位: 中國民用航空飛行學院 50 時間限制: 200 ms 51 內存限制: 64 MB 52 代碼長度限制: 16 KB 53 題目詳情 54 7-3 統計字符 (20分) 55 統計一個給定字符串中指定的字符出現的次數。 56 輸入格式: 57 測試輸入包含若干測試用例,每一個測試用例包含2行,第1行爲一個長度不超過5的字符串,第2行爲一個長度不超過80的字符串。注意這裏的字符串包含空格,即空格也多是要求被統計的字符之一。當讀到'#'時輸入結束,相應的結果不要輸出。 58 輸出格式: 59 對每一個測試用例,統計第1行中字符串的每一個字符在第2行字符串中出現的次數,按以下格式輸出: c n0 60 c1 n1 61 c2 n2 62 ... 63 其中ci是第1行中第i個字符,ni是ci出現的次數。 64 輸入樣例: 65 66 I 67 THIS IS A TEST 68 i ng 69 this is a long test string 70 # 71 輸出樣例: 72 73 I 2 74 i 3 75 5 76 n 2 77 g 2 78 樣例解釋: 79 第2個測試用例中,空格也是被統計的字符之一。 80 做者: 李廷元 81 單位: 中國民用航空飛行學院 82 時間限制: 400 ms 83 內存限制: 64 MB 84 代碼長度限制: 16 KB 85 題目詳情 86 87 7-4 禮尚往來 (20分) 88 吉哥仍是那個吉哥,那個江湖人稱「嘰嘰哥」的基哥。每當節日來臨,女朋友衆多的嘰嘰哥老是能從全國各地的女朋友那裏收到各類禮物。有禮物收到固然值得高興,但回禮確是件麻煩的事!不管多麻煩,總很差意思收禮而不回禮,那也不是嘰嘰哥的風格。如今,即愛面子又摳門的嘰嘰哥想出了一個絕妙的好辦法:他準備將各個女朋友送來的禮物合理分配,再回送不一樣女朋友,這樣就不用再花錢買禮物了!假設嘰嘰哥的n個女朋友每人送他一個禮物(每一個人送的禮物都不相同),如今他須要合理安排,再回送每一個女朋友一份禮物,重點是,回送的禮物不能是這個女朋友以前送他的那個禮物,否則,嘰嘰哥可就攤上事了,攤上大事了......如今,嘰嘰哥想知道總共有多少種知足條件的回送禮物方案呢? 89 輸入格式: 90 輸入數據第一行是個正整數T,表示總共有T組測試數據(T <= 100); 每組數據包含一個正整數n,表示嘰嘰哥的女朋友個數爲n( 1 <= n <= 100 )。 91 輸出格式: 92 請輸出可能的方案數,由於方案數可能比較大,請將結果對1000000007 取模後再輸出。(提示:在遞推過程當中,不斷求餘防止數據太大致使數據溢出。) 每組輸出佔一行。 93 輸入樣例: 94 95 3 96 1 97 2 98 4 99 100 輸出樣例: 101 102 0 103 1 104 9 105 106 107 做者: hcx11333 108 單位: 山東大學(威海) 109 時間限制: 1000 ms 110 內存限制: 64 MB 111 代碼長度限制: 16 KB 112 題目詳情 113 114 7-5 找單詞 (20分) 115 假設有x1個字母A, x2個字母B,..... x26個字母Z,同時假設字母A的價值爲1,字母B的價值爲2,..... 字母Z的價值爲26。那麼,對於給定的字母,能夠找到多少價值<=50的單詞呢?單詞的價值就是組成一個單詞的全部字母的價值之和,好比,單詞ACM的價值是1+3+14=18,單詞HDU的價值是8+4+21=33。(組成的單詞與排列順序無關,好比ACM與CMA認爲是同一個單詞)。 116 輸入格式: 117 輸入首先是一個整數N,表明測試實例的個數。 而後包括N行數據,每行包括26個<=20的整數x1,x2,.....x26. 118 輸出格式: 119 對於每一個測試實例,請輸出能找到的總價值<=50的單詞數,每一個實例的輸出佔一行。 120 輸入樣例: 121 122 2 123 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 124 9 2 6 2 10 2 2 5 6 1 0 2 7 0 2 2 7 5 10 6 10 2 10 6 1 9 125 126 輸出樣例: 127 在這裏給出相應的輸出。例如: 128 129 7 130 379297 131 132 133 做者: hcx11333 134 單位: 山東大學(威海) 135 時間限制: 1000 ms 136 內存限制: 64 MB 137 代碼長度限制: 16 KB 138 題目詳情 139 140 7-6 求最大元素值 (30分) 141 n個元素的數組的最大元素能夠用遞歸計算出來。 定義方法:int max(int x, int y) 它返回x和y兩個整數中的較大值。 試用遞歸編寫方法:int arraymax(int[] a, int n) 它使用遞歸返回數組a的最大元素值。 終止條件:n==2 遞歸步驟:arraymax=max(max(a[0],...,a[n-2]), a[n-1]) 142 輸入格式: 143 第一行的第一個元素是輸入元素個數n (1<n<=30),第二個元素以後是輸入n個元素; 144 輸出格式: 145 按格式要求輸出相鄰兩個元素的最大值,例如輸出的第一項是a[0]和a[1]之間的最大值;第二項爲以前的最大值與a[2]之間的最大值,依次類推,直到最後輸出n個元素數組的最大元素值。 146 輸入樣例: 147 148 5 1 3 2 5 3 149 輸出樣例: 150 151 max(1,3)=3 max(3,2)=3 max(3,5)=5 max(5,3)=5 5 152 153 做者: 林華 154 單位: 廣東外語外貿大學 155 000題目詳情 156 157 7-7 求最大公約數 (30分) 158 使用展轉相除法和遞歸求兩個正整數m和n的最大公約數。 159 輸入格式: 160 輸入兩個正整數m,n。 161 輸出格式: 162 按要求輸出展轉相除過程及最終結果,輸出結果之間空格分隔。 163 輸入樣例: 164 165 21 35 166 輸出樣例: 167 168 gcd(21,35) gcd(35,21) gcd(21,14) gcd(14,7) 7 169 170 做者: 林華 171 單位: 廣東外語外貿大學 172 000題目詳情 173 174 7-8 找第k小的數 (20分) 175 設計一個平均時間爲O(n)的算法,在n(1<=n<=1000)個無序的整數中找出第k小的數。 176 提示:函數int partition(int a[],int left,int right)的功能是根據a[left]~a[right]中的某個元素x(如a[left])對a[left]~a[right]進行劃分,劃分後的x所在位置的左段全小於等於x,右段全大於等於x,同時利用x所在的位置還能夠計算出x是這批數據按升非降序排列的第幾個數。所以能夠編制int find(int a[],int left,int right,int k)函數,經過調用partition函數得到劃分點,判斷劃分點是否第k小,若不是,遞歸調用find函數繼續在左段或右段查找。 177 輸入格式: 178 輸入有兩行: 179 第一行是n和k,0<k<=n<=10000 180 第二行是n個整數 181 輸出格式: 182 輸出第k小的數 183 輸入樣例: 184 在這裏給出一組輸入。例如: 185 186 10 4 187 2 8 9 0 1 3 6 7 8 2 188 輸出樣例: 189 在這裏給出相應的輸出。例如: 190 191 2 192 193 做者: 陳曉梅 194 單位: 廣東外語外貿大學 195 時間限制: 400 ms 196 內存限制: 64 MB 197 代碼長度限制: 16 KB 198 題目詳情 199 200 7-9 求逆序對數目 (20分) 201 注意:本問題算法的時間複雜度要求爲O(nlogn), 不然得分無效 202 題目來源:http://poj.org/problem?id=1804 Background Raymond Babbitt drives his brother Charlie mad. Recently Raymond counted 246 toothpicks spilled all over the floor in an instant just by glancing at them. And he can even count Poker cards. Charlie would love to be able to do cool things like that, too. He wants to beat his brother in a similar task. 203 Problem Here's what Charlie thinks of. Imagine you get a sequence of N numbers. The goal is to move the numbers around so that at the end the sequence is ordered. The only operation allowed is to swap two adjacent numbers. Let us try an example: Start with: 2 8 0 3 swap (2 8) 8 2 0 3 swap (2 0) 8 0 2 3 swap (2 3) 8 0 3 2 swap (8 0) 0 8 3 2 swap (8 3) 0 3 8 2 swap (8 2) 0 3 2 8 swap (3 2) 0 2 3 8 swap (3 8) 0 2 8 3 swap (8 3) 0 2 3 8 204 So the sequence (2 8 0 3) can be sorted with nine swaps of adjacent numbers. However, it is even possible to sort it with three such swaps: Start with: 2 8 0 3 swap (8 0) 2 0 8 3 swap (2 0) 0 2 8 3 swap (8 3) 0 2 3 8 205 The question is: What is the minimum number of swaps of adjacent numbers to sort a given sequence?Since Charlie does not have Raymond's mental capabilities, he decides to cheat. Here is where you come into play. He asks you to write a computer program for him that answers the question in O(nlogn). Rest assured he will pay a very good prize for it. 206 輸入格式: 207 The first line contains the length N (1 <= N <= 1000) of the sequence; The second line contains the N elements of the sequence (each element is an integer in [-1000000, 1000000]). All numbers in this line are separated by single blanks. 208 輸出格式: 209 Print a single line containing the minimal number of swaps of adjacent numbers that are necessary to sort the given sequence. 210 輸入樣例: 211 在這裏給出一組輸入。例如: 212 213 6 214 -42 23 6 28 -100 65537 215 輸出樣例: 216 在這裏給出相應的輸出。例如: 217 218 5 219 220 做者: 陳曉梅 221 單位: 廣東外語外貿大學 222 時間限制: 400 ms 223 內存限制: 64 MB 224 代碼長度限制: 16 KB 225 題目詳情 226 227 7-10 裝箱問題 (20分) 228 假設有N項物品,大小分別爲s一、s二、…、si、…、sN,其中si爲知足1≤si≤100的整數。要把這些物品裝入到容量爲100的一批箱子(序號1-N)中。裝箱方法是:對每項物品, 順序掃描箱子,把該物品放入足以可以容下它的第一個箱子中。請寫一個程序模擬這種裝箱過程,並輸出每一個物品所在的箱子序號,以及放置所有物品所需的箱子數目。 229 輸入格式: 230 輸入第一行給出物品個數N(≤1000);第二行給出N個正整數si(1≤si≤100,表示第i項物品的大小)。 231 輸出格式: 232 按照輸入順序輸出每一個物品的大小及其所在的箱子序號,每一個物品佔1行,最後一行輸出所需的箱子數目。 233 輸入樣例: 234 235 8 236 60 70 80 90 30 40 10 20 237 輸出樣例: 238 239 60 1 240 70 2 241 80 3 242 90 4 243 30 1 244 40 5 245 10 1 246 20 2 247 5 248 249 做者: DS課程組 250 單位: 浙江大學 251 時間限制: 400 ms 252 內存限制: 64 MB 253 代碼長度限制: 16 KB 254 題目詳情 255 256 7-11 汽車加油問題 (20分) 257 題目來源:王曉東《算法設計與分析》 258 一輛汽車加滿油後可行駛 n千米。旅途中有若干個加油站。設計一個有效算法,指出應 在哪些加油站停靠加油,使沿途加油次數最少。 259 輸入格式: 260 第一行有 2 個正整數n和 k(k<=1000 ),表示汽車加滿油後可行駛n千米,且旅途中有 k個加油站。 第二行有 k+1 個整數,表示第 k 個加油站與第k-1 個加油站之間的距離。 第 0 個加油站表示出發地,汽車已加滿油。 第 k+1 個加油站表示目的地。 261 輸出格式: 262 輸出最少加油次數。若是沒法到達目的地,則輸出「No Solution!」。 263 輸入樣例: 264 265 7 7 266 1 2 3 4 5 1 6 6 267 輸出樣例: 268 269 4 270 271 做者: 陳曉梅 272 單位: 廣東外語外貿大學 273 時間限制: 400 ms 274 內存限制: 64 MB 275 代碼長度限制: 16 KB 276 題目詳情 277 278 7-12 會場安排問題 (20分) 279 題目來源:王曉東《算法設計與分析》 280 假設要在足夠多的會場裏安排一批活動,並但願使用盡量少的會場。設計一個有效的 貪心算法進行安排。(這個問題其實是著名的圖着色問題。若將每個活動做爲圖的一個 頂點,不相容活動間用邊相連。使相鄰頂點着有不一樣顏色的最小着色數,相應於要找的最小 會場數。) 281 輸入格式: 282 第一行有 1 個正整數k,表示有 k個待安排的活動。 接下來的 k行中,每行有 2個正整數,分別表示 k個待安排的活動開始時間和結束時間。時間 以 0 點開始的分鐘計。 283 輸出格式: 284 輸出最少會場數。 285 輸入樣例: 286 287 5 288 1 23 289 12 28 290 25 35 291 27 80 292 36 50 293 輸出樣例: 294 在這裏給出相應的輸出。例如: 295 296 3 297 298 做者: 陳曉梅 299 單位: 廣東外語外貿大學 300 時間限制: 400 ms 301 內存限制: 64 MB 302 代碼長度限制: 16 KB 303 題目詳情 304 305 7-13 最優合併問題 (20分) 306 題目來源:王曉東《算法設計與分析》 307 給定k 個排好序的序列, 用 2 路合併算法將這k 個序列合併成一個序列。 假設所採用的 2 路合併算法合併 2 個長度分別爲m和n的序列須要m+n-1 次比較。試設 計一個算法肯定合併這個序列的最優合併順序,使所需的總比較次數最少。 爲了進行比較,還須要肯定合併這個序列的最差合併順序,使所需的總比較次數最多。 308 輸入格式: 309 第一行有 1 個正整數k,表示有 k個待合併序列。 第二行有 k個正整數,表示 k個待合併序列的長度。 310 輸出格式: 311 輸出最多比較次數和最少比較次數。 312 輸入樣例: 313 在這裏給出一組輸入。例如: 314 315 4 316 5 12 11 2 317 輸出樣例: 318 在這裏給出相應的輸出。例如: 319 320 78 52 321 322 做者: 陳曉梅 323 單位: 廣東外語外貿大學 324 時間限制: 400 ms 325 內存限制: 64 MB 326 代碼長度限制: 16 KB 327 題目詳情 328 329 7-14 看電影 (20分) 330 終於到週末了,明明是特別喜歡看電影。他想在一天內儘可能多的看到完整的多部電影。 如今他把他喜歡的電影的播放時間表給你,但願你能幫他合理安排。 331 輸入格式: 332 輸入包含多組測試數據。每組輸入的第一行是一個整數n(n<=100),表示明明喜歡的電影的總數。 接下來n行,每行輸入兩個整數si和ei(1<=i<=n),表示第i個電影的開始和結束時間,爲了簡化問題,每一個時間都用一個正整數表示。 當n=0時,輸入結束。 333 輸出格式: 334 對於每組輸入,輸出能完整看到的電影的個數。 335 輸入樣例: 336 在這裏給出一組輸入。例如: 337 338 12 339 1 3 340 3 4 341 0 7 342 3 8 343 15 19 344 15 20 345 10 15 346 8 18 347 6 12 348 5 10 349 4 14 350 2 9 351 0 352 輸出樣例: 353 在這裏給出相應的輸出。例如: 354 355 5 356 357 做者: 王會勇 358 單位: 河北科技大學 359 時間限制: 1000 ms 360 內存限制: 32 MB 361 代碼長度限制: 16 KB 362 題目詳情 363 364 7-15 最近距離 (30分) 365 在一個遊戲中,玩家處於一個以下所示12行12列的迷宮: 366 0,1,0,0,0,1,1,1,0,1,0,1 367 0,0,0,1,0,0,0,0,1,0,0,1 368 0,1,0,1,0,1,1,1,0,1,0,0 369 0,1,0,0,0,0,0,1,0,0,1,1 370 0,0,0,0,1,0,0,0,0,0,0,0 371 0,0,1,0,0,0,1,0,0,0,1,0 372 0,0,1,0,0,0,0,0,1,0,0,0 373 1,0,0,1,0,1,0,0,0,1,0,1 374 0,0,1,0,1,0,1,0,1,0,0,0 375 0,0,0,0,0,1,0,0,0,1,1,0 376 0,0,0,0,0,1,0,0,0,0,0,0 377 0,1,0,1,0,0,0,1,0,1,0,0 378 其中迷宮由0,1組成,0表示道路,1表示障礙物。 379 如今要根據玩家和遊戲中被攻擊的虛擬boss所在位置,給玩家以最近距離的提示。 380 最近距離:即玩家走到boss所走的最少步數。(注:路線中的一步是指從一個座標點走到其上下左右相鄰座標點。) 381 輸入格式: 382 輸入4個整數a,b,c,d(即玩家和虛擬boss在迷宮中的座標位置分別爲(a,b) 、(c,d)), 其中 0<=a,b,c,d<12。 383 輸出格式: 384 輸出在迷宮中從(a,b)出發到達(c,d)的最少步數,若是(a,b)永遠沒法到達(c,d)則輸出10000。 385 輸入樣例: 386 在這裏給出一組輸入。例如: 387 388 0 0 11 11 389 輸出樣例: 390 在這裏給出相應的輸出。例如: 391 392 22 393 394 做者: 高見元 395 單位: 湖北經濟學院 396 時間限制: 1000 ms 397 內存限制: 64 MB 398 代碼長度限制: 16 KB 399 題目詳情 400 401 7-16 子集和問題 (30分) 402 設集合S={x1,x2,…,xn}是一個正整數集合,c是一個正整數,子集和問題斷定是否存在S的一個子集S1,使S1中的元素之和爲c。試設計一個解子集和問題的回溯法。 403 輸入格式: 404 輸入數據第1行有2個正整數n和c,n表示S的大小,c是子集和的目標值。接下來的1行中,有n個正整數,表示集合S中的元素。 是子集和的目標值。接下來的1 行中,有n個正整數,表示集合S中的元素。 405 輸出格式: 406 輸出子集和問題的解,以空格分隔,最後一個輸出的後面有空格。當問題無解時,輸出「No Solution!」。 407 輸入樣例: 408 在這裏給出一組輸入。例如: 409 410 5 10 411 2 2 6 5 4 412 輸出樣例: 413 在這裏給出相應的輸出。例如: 414 415 2 2 6 416 417 做者: 陳曉梅 418 單位: 廣東外語外貿大學 419 時間限制: 400 ms 420 內存限制: 64 MB 421 代碼長度限制: 16 KB 422 題目詳情 423 424 7-17 最佳調度問題 (35分) 425 假設有n(n<=20)個任務由k(k<=20)個可並行工做的機器完成。完成任務i須要的時間爲ti。 試設計一個算法,對任意給定的整數n和k,以及完成任務i 須要的時間爲ti ,i=1~n。計算完成這n個任務的最佳調度,使得完成所有任務的時間最先。 426 輸入格式: 427 輸入數據的第一行有2 個正整數n和k。第2 行的n個正整數是完成n個任務須要的時間。 428 輸出格式: 429 將計算出的完成所有任務的最先時間輸出到屏幕。 430 輸入樣例: 431 在這裏給出一組輸入。例如: 432 433 7 3 434 2 14 4 16 6 5 3 435 輸出樣例: 436 在這裏給出相應的輸出。例如: 437 438 17 439 440 做者: 陳曉梅 441 單位: 廣東外語外貿大學 442 時間限制: 400 ms 443 內存限制: 64 MB 444 代碼長度限制: 16 KB 445 題目詳情 446 447 7-18 找零錢*** (20分) 448 收銀員現有 n 張面值分別爲 v1,v2,...,vn 的紙幣。若找零金額爲 m,則一共有多少種找零方法? 449 注:0<n≤1000,0<v1,v2,...,vn≤10000,0<m≤10000 450 輸入格式 451 n v1,v2,...,vn m 452 輸出格式 453 如有解,則輸出所有找零方案,每輸出一種 若無解,則輸出「None」 454 輸入樣例1 455 456 6 457 3 1 4 3 2 7 458 9 459 輸出樣例1 460 461 3 1 3 2 462 3 4 2 463 4 3 2 464 2 7 465 輸入樣例2 466 467 5 468 5 3 4 6 7 469 2 470 輸出樣例2 471 472 None 473 474 做者: 李祥 475 單位: 湖北經濟學院 476 時間限制: 400 ms 477 內存限制: 64 MB 478 代碼長度限制: 16 KB 479 題目詳情 480 481 7-19 工做分配問題 (20分) 482 設有n件工做分配給n我的。將工做i分配給第j我的所需的費用爲cij 。 設計一個算法,對於給定的工做費用,爲每個人都分配1 件不一樣的工做,並使總費用達到最小。 483 輸入格式: 484 輸入數據的第一行有1 個正整數n (1≤n≤20)。接下來的n行,每行n個數,表示工做費用。 485 輸出格式: 486 將計算出的最小總費用輸出到屏幕。 487 輸入樣例: 488 在這裏給出一組輸入。例如: 489 490 3 491 10 2 3 492 2 3 4 493 3 4 5 494 輸出樣例: 495 在這裏給出相應的輸出。例如: 496 497 9 498 499 做者: 陳曉梅 500 單位: 廣東外語外貿大學 501 時間限制: 400 ms 502 內存限制: 64 MB 503 代碼長度限制: 16 KB 504 題目詳情 505 506 7-20 單調遞增最長子序列 (20分) 507 設計一個O(n2)時間的算法,找出由n個數組成的序列的最長單調遞增子序列。 508 輸入格式: 509 輸入有兩行: 第一行:n,表明要輸入的數列的個數 第二行:n個數,數字之間用空格格開 510 輸出格式: 511 最長單調遞增子序列的長度 512 輸入樣例: 513 在這裏給出一組輸入。例如: 514 515 5 516 1 3 5 2 9 517 輸出樣例: 518 在這裏給出相應的輸出。例如: 519 520 4 521 522 做者: 陳曉梅 523 單位: 廣東外語外貿大學 524 時間限制: 400 ms 525 內存限制: 64 MB 526 代碼長度限制: 16 KB 527 題目詳情 528 529 7-21 迴文串問題 (40分) 530 一個字符串,若是從左到右讀和從右到左讀是徹底同樣的,好比"aba",咱們稱其爲迴文串。如今給你一個字符串,可在任意位置添加字符,求最少添加幾個字符,才能使其變成一個迴文串。 531 輸入格式: 532 任意給定的一個字符串,其長度不超過1000. 533 輸出格式: 534 能變成迴文串所需添加的最少字符數。 535 輸入樣例: 536 在這裏給出一組輸入。例如: 537 538 Ab3bd 539 540 Abb 541 輸出樣例: 542 在這裏給出相應的輸出。例如: 543 544 2 545 546 1 547 548 做者: 高見元 549 單位: 湖北經濟學院 550 時間限制: 1000 ms 551 內存限制: 64 MB 552 代碼長度限制: 16 KB 553 題目詳情 554 555 7-22 最大子段和 (20分) 556 給定n個整數(可能爲負數)組成的序列a[1],a[2],a[3],…,a[n],求該序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。當所給的整數均爲負數時,定義子段和爲0。 557 要求算法的時間複雜度爲O(n)。 558 輸入格式: 559 輸入有兩行: 560 第一行是n值(1<=n<=10000); 561 第二行是n個整數。 562 輸出格式: 563 輸出最大子段和。 564 輸入樣例: 565 在這裏給出一組輸入。例如: 566 567 6 568 -2 11 -4 13 -5 -2 569 輸出樣例: 570 在這裏給出相應的輸出。例如: 571 572 20 573 574 做者: 陳曉梅 575 單位: 廣東外語外貿大學 576 時間限制: 400 ms 577 內存限制: 64 MB 578 代碼長度限制: 16 KB 579 題目詳情 580 581 7-23 整數拆分 (20分) 582 給定一個整數n,將其無序拆分紅最大數爲k的拆分數,(n,k不超出100) 要求:全部的拆分方案不重複。 如當n=4,k=4時,一共有5種拆分方案,拆分以下: 583 584 (1)4=1+1+1+1 585 (2)4=1+1+2 586 (3)4=1+3 587 (4)4=2+2 588 (5)4=4 589 輸入格式: 590 每一行輸入一組整數n,k,遇到鍵盤結束符^Z或文件結束符EOF時結束輸入。 591 輸出格式: 592 按行輸出每組的拆分方案數。 593 輸入樣例: 594 595 4,4 596 5,4 597 輸出樣例: 598 599 5 600 6 601 602 做者: 張慶 603 單位: 集美大學 604 時間限制: 400 ms 605 內存限制: 64 MB 606 代碼長度限制: 16 KB 607 題目詳情 608 609 7-24 青蛙跳臺階 (30分) 610 一隻青蛙一次能夠跳上 1 級臺階,也能夠跳上2 級。求該青蛙跳上一個n 級的臺階總共有多少種跳法。 611 輸入格式: 612 首先輸入數字n,表明接下來有n組輸入,50>=n>=0,而後每行一個數字,表明臺階數,數字爲小於60的整數 613 輸出格式: 614 對每一組輸入,輸出青蛙的跳法。 615 輸入樣例: 616 617 3 618 1 619 2 620 3 621 輸出樣例: 622 623 1 624 2 625 3 626 627 做者: 房正華 628 單位: 青島工學院 629 時間限制: 400 ms 630 內存限制: 64 MB 631 代碼長度限制: 16 KB 632 題目詳情 633 634 7-25 朋友圈 (30分) 635 某學校有N個學生,造成M個俱樂部。每一個俱樂部裏的學生有着必定類似的興趣愛好,造成一個朋友圈。一個學生能夠同時屬於若干個不一樣的俱樂部。根據「個人朋友的朋友也是個人朋友」這個推論能夠得出,若是A和B是朋友,且B和C是朋友,則A和C也是朋友。請編寫程序計算最大朋友圈中有多少人。 636 輸入格式: 637 輸入的第一行包含兩個正整數N(≤30000)和M(≤1000),分別表明學校的學生總數和俱樂部的個數。後面的M行每行按如下格式給出1個俱樂部的信息,其中學生從1~N編號: 638 639 第i個俱樂部的人數Mi(空格)學生1(空格)學生2 … 學生Mi 640 641 輸出格式: 642 輸出給出一個整數,表示在最大朋友圈中有多少人。 643 輸入樣例: 644 645 7 4 646 3 1 2 3 647 2 1 4 648 3 5 6 7 649 1 6 650 輸出樣例: 651 652 4 653 654 做者: DS課程組 655 單位: 浙江大學 656 時間限制: 400 ms 657 內存限制: 64 MB 658 代碼長度限制: 16 KB 659 題目詳情 660 661 7-26 願天下有情人都是失散多年的兄妹 (30分) 662 呵呵。你們都知道五服之內不得通婚,即兩我的最近的共同祖先若是在五代之內(即本人、父母、祖父母、曾祖父母、高祖父母)則不可通婚。本題就請你幫助一對有情人判斷一下,他們到底是否能夠成婚? 663 輸入格式: 664 輸入第一行給出一個正整數 665 N 666 (2 ≤ 667 N 668 ≤104),隨後 669 N 670 行,每行按如下格式給出一我的的信息: 671 672 本人ID 性別 父親ID 母親ID 673 其中 674 ID 675 是5位數字,每人不一樣;性別 676 M 677 表明男性、 678 F 679 表明女性。若是某人的父親或母親已經不可考,則相應的 680 ID 681 位置上標記爲 682 -1 683 。 684 接下來給出一個正整數 685 K 686 ,隨後 687 K 688 行,每行給出一對有情人的 689 ID 690 ,其間以空格分隔。 691 注意:題目保證兩我的是同輩,每人只有一個性別,而且血緣關係網中沒有亂倫或隔輩成婚的狀況。 692 輸出格式: 693 對每一對有情人,判斷他們的關係是否能夠通婚:若是兩人是同性,輸出 694 Never Mind 695 ;若是是異性而且關係出了五服,輸出 696 Yes 697 ;若是異性關係未出五服,輸出 698 No 699 。 700 輸入樣例: 701 702 24 703 00001 M 01111 -1 704 00002 F 02222 03333 705 00003 M 02222 03333 706 00004 F 04444 03333 707 00005 M 04444 05555 708 00006 F 04444 05555 709 00007 F 06666 07777 710 00008 M 06666 07777 711 00009 M 00001 00002 712 00010 M 00003 00006 713 00011 F 00005 00007 714 00012 F 00008 08888 715 00013 F 00009 00011 716 00014 M 00010 09999 717 00015 M 00010 09999 718 00016 M 10000 00012 719 00017 F 012 720 000 F 110 00013 721 00019 F 11100 00018 722 00020 F 00015 11110 723 00021 M 11100 00020 724 00022 M 00016 -1 725 00023 M 10012 00017 726 00024 M 00022 10013 727 9 728 00021 00024 729 00019 00024 730 00011 00012 731 00022 00018 732 00001 00004 733 00013 00016 734 00017 00015 735 00019 00021 736 00010 00011 737 輸出樣例: 738 739 Never Mind 740 Yes 741 Never Mind 742 No 743 Yes 744 No 745 Yes 746 No 747 No 748 749 做者: 陳越 750 單位: 浙江大學 751 時間限制: 200 ms 752 內存限制: 64 MB 753 代碼長度限制: 16 KB 754 題目詳情 755 756 7-27 列出全部祖先結點 (20分) 757 對於給定的二叉樹,本題要求你按從上到下順序輸出指定結點的全部祖先結點。 758 輸入格式: 759 首先第一行給出一個正整數 N(≤10),爲樹中結點總數。樹中的結點從 0 到 N−1 編號。 760 隨後 N 行,每行給出一個對應結點左右孩子的編號。若是某個孩子不存在,則在對應位置給出 "-"。編號間以 1 個空格分隔。 761 最後一行給出一個結點的編號i(0≤i≤N-1)。 762 輸出格式: 763 在一行中按規定順序輸出i的全部祖先結點的編號。編號間以 1 個空格分隔,行首尾不得有多餘空格。 764 輸入樣例: 765 766 7 767 2 - 768 - 6 769 - - 770 0 5 771 - - 772 4 1 773 - - 774 4 775 輸出樣例: 776 777 3 5 778 779 做者: DS課程組 780 單位: 臨沂大學 781 時間限制: 400 ms 782 內存限制: 64 MB 783 代碼長度限制: 16 KB 784 題目詳情 785 786 7-28 深刻虎穴 (35分) 787 著名的王牌間諜 007 須要執行一次任務,獲取敵方的機密情報。已知情報藏在一個地下迷宮裏,迷宮只有一個入口,裏面有不少條通路,每條路通向一扇門。每一扇門背後或者是一個房間,或者又有不少條路,一樣是每條路通向一扇門…… 他的手裏有一張表格,是其餘間諜幫他收集到的情報,他們記下了每扇門的編號,以及這扇門背後的每一條通路所到達的門的編號。007 發現不存在兩條路通向同一扇門。 788 內線告訴他,情報就藏在迷宮的最深處。可是這個迷宮太大了,他須要你的幫助 —— 請編程幫他找出距離入口最遠的那扇門。 789 輸入格式: 790 輸入首先在一行中給出正整數 N(<105),是門的數量。最後 N 行,第 i 行(1≤i≤N)按如下格式描述編號爲 i 的那扇門背後能通向的門: 791 792 K D[1] D[2] ... D[K] 793 其中 794 K 795 是通道的數量,其後是每扇門的編號。 796 輸出格式: 797 在一行中輸出距離入口最遠的那扇門的編號。題目保證這樣的結果是惟一的。 798 輸入樣例: 799 800 13 801 3 2 3 4 802 2 5 6 803 1 7 804 1 8 805 1 9 806 0 807 2 11 10 808 1 13 809 0 810 0 811 1 12 812 0 813 0 814 輸出樣例: 815 816 12 817 818 做者: 陳越 819 單位: 浙江大學 820 時間限制: 400 ms 821 內存限制: 64 MB 822 代碼長度限制: 16 KB 823 題目詳情 824 825 7-29 城市間緊急救援 (25分) 826 做爲一個城市的應急救援隊伍的負責人,你有一張特殊的全國地圖。在地圖上顯示有多個分散的城市和一些鏈接城市的快速道路。每一個城市的救援隊數量和每一條鏈接兩個城市的快速道路長度都標在地圖上。當其餘城市有緊急求助電話給你的時候,你的任務是帶領你的救援隊儘快趕往事發地,同時,一路上召集儘量多的救援隊。 827 輸入格式: 828 輸入第一行給出4個正整數N、M、S、D,其中N(2≤N≤500)是城市的個數,順便假設城市的編號爲0 ~ (N−1);M是快速道路的條數;S是出發地的城市編號;D是目的地的城市編號。 829 第二行給出N個正整數,其中第i個數是第i個城市的救援隊的數目,數字間以空格分隔。隨後的M行中,每行給出一條快速道路的信息,分別是:城市一、城市二、快速道路的長度,中間用空格分開,數字均爲整數且不超過500。輸入保證救援可行且最優解惟一。 830 輸出格式: 831 第一行輸出最短路徑的條數和可以召集的最多的救援隊數量。第二行輸出從S到D的路徑中通過的城市編號。數字間以空格分隔,輸出結尾不能有多餘空格。 832 輸入樣例: 833 834 4 5 0 3 835 20 30 40 10 836 0 1 1 837 1 3 2 838 0 3 3 839 0 2 2 840 2 3 2 841 輸出樣例: 842 843 2 60 844 0 1 3 845 846 做者: 陳越 847 單位: 浙江大學 848 時間限制: 400 ms 849 內存限制: 64 MB 850 代碼長度限制: 16 KB 851 題目詳情 852 853 7-30 紅色警報 (25分) 854 戰爭中保持各個城市間的連通性很是重要。本題要求你編寫一個報警程序,當失去一個城市致使國家被分裂爲多個沒法連通的區域時,就發出紅色警報。注意:若該國原本就不徹底連通,是分裂的k個區域,而失去一個城市並不改變其餘城市之間的連通性,則不要發出警報。 855 輸入格式: 856 輸入在第一行給出兩個整數 857 N 858 (0 < 859 N 860 ≤ 500)和 861 M 862 (≤ 5000),分別爲城市個數(因而默認城市從0到 863 N 864 -1編號)和鏈接兩城市的通路條數。隨後 865 M 866 行,每行給出一條通路所鏈接的兩個城市的編號,其間以1個空格分隔。在城市信息以後給出被攻佔的信息,即一個正整數 867 K 868 和隨後的 869 K 870 個被攻佔的城市的編號。 871 注意:輸入保證給出的被攻佔的城市編號都是合法的且無重複,但並不保證給出的通路沒有重複。 872 輸出格式: 873 對每一個被攻佔的城市,若是它會改變整個國家的連通性,則輸出 874 Red Alert: City k is lost! 875 ,其中 876 k 877 是該城市的編號;不然只輸出 878 City k is lost. 879 便可。若是該國失去了最後一個城市,則增長一行輸出 880 Game Over. 881 。 882 輸入樣例: 883 884 5 4 885 0 1 886 1 3 887 3 0 888 0 4 889 5 890 1 2 0 4 3 891 輸出樣例: 892 893 City 1 is lost. 894 City 2 is lost. 895 Red Alert: City 0 is lost! 896 City 4 is lost. 897 City 3 is lost. 898 Game Over. 899 900 做者: 陳越 901 單位: 浙江大學 902 時間限制: 400 ms 903 內存限制: 64 MB 904 代碼長度限制: 16 KB 905 題目詳情 906 907 7-31 拯救007(升級版) (30分) 908 在老電影「007之生死關頭」(Live and Let Die)中有一個情節,007被毒販抓到一個鱷魚池中心的小島上,他用了一種極爲大膽的方法逃脫 —— 直接踩着池子裏一系列鱷魚的大腦殼跳上岸去!(聽說當年替身演員被最後一條鱷魚咬住了腳,幸虧穿的是特別加厚的靴子才逃過一劫。) 909 設鱷魚池是長寬爲100米的方形,中心座標爲 (0, 0),且東北角座標爲 (50, 50)。池心島是以 (0, 0) 爲圓心、直徑15米的圓。給定池中分佈的鱷魚的座標、以及007一次能跳躍的最大距離,你須要給他指一條最短的逃生路徑 —— 所謂「最短」是指007要跳躍的步數最少。 910 輸入格式: 911 首先第一行給出兩個正整數:鱷魚數量 N(≤100)和007一次能跳躍的最大距離 D。隨後 N 行,每行給出一條鱷魚的 (x,y) 座標。注意:不會有兩條鱷魚待在同一個點上。 912 輸出格式: 913 若是007有可能逃脫,首先在第一行輸出007須要跳躍的最少步數,而後從第二行起,每行給出從池心島到岸邊每一步要跳到的鱷魚的座標 (x,y)。若是沒可能逃脫,就在第一行輸出 0 做爲跳躍步數。若是最短路徑不惟一,則輸出第一跳最近的那個解,題目保證這樣的解是惟一的。 914 輸入樣例 1: 915 916 17 15 917 10 -21 918 10 21 919 -40 10 920 30 -50 921 20 40 922 35 10 923 0 -10 924 -25 22 925 40 -40 926 -30 30 927 -10 22 928 0 11 929 25 21 930 25 10 931 10 10 932 10 35 933 -30 10 934 輸出樣例 1: 935 936 4 937 0 11 938 10 21 939 10 35 940 輸入樣例 2: 941 942 4 13 943 -12 12 944 12 12 945 -12 -12 946 12 -12 947 輸出樣例 2: 948 949 0 950 951 做者: 陳越 952 單位: 浙江大學 953 時間限制: 400 ms 954 內存限制: 64 MB 955 代碼長度限制: 16 KB 956 題目詳情 957 958 7-32 直搗黃龍 (30分) 959 本題是一部戰爭大片 —— 你須要從己方大本營出發,一路攻城略地殺到敵方大本營。首先時間就是生命,因此你必須選擇合適的路徑,以最快的速度佔領敵方大本營。當這樣的路徑不惟一時,要求選擇能夠沿途解放最多城鎮的路徑。若這樣的路徑也不惟一,則選擇能夠有效殺傷最多敵軍的路徑。 960 輸入格式: 961 輸入第一行給出 2 個正整數 N(2 ≤ N ≤ 200,城鎮總數)和 K(城鎮間道路條數),以及己方大本營和敵方大本營的代號。隨後 N-1 行,每行給出除了己方大本營外的一個城鎮的代號和駐守的敵軍數量,其間以空格分隔。再後面有 K 行,每行按格式 962 城鎮1 城鎮2 距離 963 給出兩個城鎮之間道路的長度。這裏設每一個城鎮(包括雙方大本營)的代號是由 3 個大寫英文字母組成的字符串。 964 輸出格式: 965 按照題目要求找到最合適的進攻路徑(題目保證速度最快、解放最多、殺傷最強的路徑是惟一的),並在第一行按照格式 966 己方大本營->城鎮1->...->敵方大本營 967 輸出。第二行順序輸出最快進攻路徑的條數、最短進攻距離、殲敵總數,其間以 1 個空格分隔,行首尾不得有多餘空格。 968 輸入樣例: 969 970 10 12 PAT DBY 971 DBY 100 972 PTA 20 973 PDS 90 974 PMS 40 975 TAP 50 976 ATP 200 977 LNN 80 978 LAO 30 979 LON 70 980 PAT PTA 10 981 PAT PMS 10 982 PAT ATP 20 983 PAT LNN 10 984 LNN LAO 10 985 LAO LON 10 986 LON DBY 10 987 PMS TAP 10 988 TAP DBY 10 989 DBY PDS 10 990 PDS PTA 10 991 DBY ATP 10 992 輸出樣例: 993 994 PAT->PTA->PDS->DBY 995 3 30 210 996 997 做者: 陳越 998 單位: 浙江大學 999 時間限制: 150 ms 1000 內存限制: 64 MB 1001 代碼長度限制: 16 KB 1002 題目詳情 1003 1004 7-33 生化危機 (20分) 1005 人類正在經歷一場生化危機,許多城市已經被病毒侵襲,這些城市中的人們爲了不感染病毒,計劃開車逃往其餘沒有被病毒入侵的城市(安全城市)。有些城市之間有公路直達,有些沒有。雖然他們知道哪些城市是安全的,可是不知道有沒有一條安全路徑可以到達安全城市(只有該路徑上通過的全部城市都是安全的,該路徑纔是安全路徑)。請你編寫一個程序幫助他們判斷。 1006 輸入格式: 1007 輸入第一行爲三個正整數,分別表示全部城市個數m(m<=100)、安全城市個數n(m<=50)、公路個數k(k<=100)。隨後一行給出n個安全城市的編號。隨後k行,每一行給出兩個整數,表示鏈接一條公路的兩個城市編號。最後一行輸入兩個整數,分別表示當前所在城市s、目標城市d。每行整數之間都用空格分隔。 1008 輸出格式: 1009 若目標城市已被病毒入侵(非安全城市),輸出"The City i is not safe!";若目標城市爲安全城市且從當前所在城市可以通過一條安全路徑到達目標城市,輸出"The city can arrive safely!";若目標城市爲安全城市可是從當前所在城市沒有一條安全路徑到達目標城市,輸出"The city can not arrive safely!",i爲目標城市編號。 1010 輸入樣例1: 1011 1012 5 2 5 1013 3 4 1014 0 1 1015 0 2 1016 0 4 1017 1 2 1018 2 4 1019 0 4 1020 輸出樣例1: 1021 1022 The city 4 can arrive safely! 1023 輸入樣例2: 1024 1025 5 2 5 1026 3 4 1027 0 1 1028 0 2 1029 0 4 1030 1 2 1031 2 4 1032 0 3 1033 輸出樣例2: 1034 1035 The city 3 can not arrive safely! 1036 輸入樣例3: 1037 1038 5 2 5 1039 3 4 1040 0 1 1041 0 2 1042 0 4 1043 1 2 1044 2 4 1045 0 1 1046 輸出樣例3: 1047 1048 The city 1 is not safe! 1049 1050 做者: DS課程組 1051 單位: 臨沂大學 1052 時間限制: 400 ms 1053 內存限制: 64 MB 1054 代碼長度限制: 16 KB 1055 題目詳情 1056 1057 7-34 孤島營救問題 (30分) 1058 1944 年,特種兵麥克接到國防部的命令,要求當即趕赴太平洋上的一個孤島,營救被敵軍俘虜的大兵瑞恩。瑞恩被關押在一個迷宮裏,迷宮地形複雜,但幸虧麥克獲得了迷宮的地形圖。迷宮的外形是一個長方形, 其南北方向被劃分爲 n 行,東西方向被劃分爲 m 列,因而整個迷宮被劃分爲 n×m 個單元。每個單元的位置可用一個有序數對 (單元的行號, 單元的列號) 來表示。南北或東西方向相鄰的 2 個單元之間可能互通,也可能有一扇鎖着的門,或者是一堵不可逾越的牆。迷宮中有一些單元存放着鑰匙,而且全部的門被分紅 p 類, 打開同一類的門的鑰匙相同,不一樣類門的鑰匙不一樣。 1059 大兵瑞恩被關押在迷宮的東南角,即 (n,m) 單元裏,並已經昏迷。迷宮只有一個入口, 在西北角。也就是說,麥克能夠直接進入 (1,1) 單元。另外,麥克從一個單元移動到另外一個 相鄰單元的時間爲 1,拿取所在單元的鑰匙的時間以及用鑰匙開門的時間可忽略不計。 1060 試設計一個算法,幫助麥克以最快的方式到達瑞恩所在單元,營救大兵瑞恩。 1061 輸入格式: 1062 第一行有三個整數,分別表示n,m,p的值。 1063 第二行是一個整數k,表示迷宮中門和牆的總數。 1064 第 i+2 行 (1≤i≤k),有 5 個整數, 依次爲 xi1,yi1,xi2,yi2,gi :當 gi≥1 時,表示 (xi1,yi1) 單元 與 (xi2,yi2) 單元之間有一扇第 gi 類的門,當 gi=0 時, 表 示 (xi1,yi1) 單元與 (xi2,yi2) 單元之間有一堵不可逾越的牆。 1065 第 k+3 行是一個整數 s,表示迷宮中存放的鑰匙總數。 1066 第 k+3+j 行 (1≤j≤s) ,有 3 個整數,依次爲 xi1,yi1,qi,表示第 j 把鑰匙存放在 (xi1,yi1) 單元裏,而且第 j 把鑰匙是用來開啓第 qi 類門。 1067 輸入數據中同一行各相鄰整數之間用一個空格分隔。 1068 數據保證有 1069 ∣xi1−xi2∣+∣yi1−yi2∣=1,0≤gi≤p 1070 1≤qi≤p 1071 n,m,p≤10,k<150 1072 輸出格式: 1073 輸出麥克營救到大兵瑞恩的最短期。若是問題無解,則輸出 −1。 1074 輸入樣例: 1075 在這裏給出一組輸入。例如: 1076 1077 4 4 9 1078 9 1079 1 2 1 3 2 1080 1 2 2 2 0 1081 2 1 2 2 0 1082 2 1 3 1 0 1083 2 3 3 3 0 1084 2 4 3 4 1 1085 3 2 3 3 0 1086 3 3 4 3 0 1087 4 3 4 4 0 1088 2 1089 2 1 2 1090 4 2 1 1091 輸出樣例: 1092 在這裏給出相應的輸出。例如: 1093 1094 14 1095 1096 做者: 小黑 1097 單位: 臨沂大學 1098 時間限制: 4000 ms 1099 內存限制: 64 MB 1100 代碼長度限制: 16 KB 1101 題目詳情 1102 1103 7-35 編輯三角形 (30分) 1104 二維平面上有一個三角形,能夠經過命令對其進行編輯。 其中命令 translate dx dy 是將三角形平移(dx,dy); 命令 rotate angle 是將三角形繞本身的中心位置(三個頂點的平均位置)旋轉angle(角度制); 命令 scale ratio 是將三角形相對於本身的中心位置縮放ratio(例如1.0表示不縮放,2.0表示放大一倍,0.5表示縮小一倍); 命令 undo 是撤銷剛纔的一個編輯操做。 1105 輸入格式: 1106 第一行給出六個實數x0 y0 x1 y1 x2 y2 表示該三角形的三個頂點座標。第二行給出正整數n (1=< n <=100),表示命令個數,隨後n行給出具體的編輯命令。 1107 輸出格式: 1108 輸出被編輯後的三角形的三個頂點座標。每一個數之間用一個空格分割,最後一個數後面不要多加空格。全部實數保留3位小數。 1109 樣例: 1110 例如輸入1: 1111 1112 3.0 3.0 4.0 3.0 3.0 4.0 1113 1 1114 translate 1.5 -1.5 1115 輸出: 1116 1117 4.500 1.500 5.500 1.500 4.500 2.500 1118 例如輸入2: 1119 1120 3.0 3.0 4.0 3.0 3.0 4.0 1121 1 1122 rotate 90.0 1123 輸出: 1124 1125 3.667 3.000 3.667 400 2.667 3.000 1126 例如輸入3: 1127 1128 3.0 3.0 4.0 3.0 3.0 4.0 1129 1 1130 scale 0.5 1131 輸出: 1132 1133 3.167 3.167 3.667 3.167 3.167 3.667 1134 例如輸入4: 1135 1136 3.0 3.0 4.0 3.0 3.0 4.0 1137 4 1138 scale 0.5 1139 undo 1140 rotate 90.0 1141 translate 0.5 0.6 1142 輸出: 1143 1144 4.167 3.600 4.167 4.600 3.167 3.600 1145 1146 做者: dingzh 1147 單位: 金陵科技學院 1148 時間限制: 400 ms 1149 內存限制: 64 MB 1150 代碼長度限制: 16 KB 1151 題目詳情 1152 1153 7-36 角度與多邊形 (20分) 1154 給你一個角度 ang. 1155 你可否在一個正 n 邊形上找到三個頂點 a,b,c 使得 ∠abc =ang. 1156 1157 若是存在多個這樣的正多邊形,輸出最小的那個。 1158 若是不存在這個多邊形,請輸出 −1. 1159 輸入格式: 1160 第一行包含一個正整數 T(1≤T≤180),表明詢問的次數。 1161 接下來 T 行,每行給出一個角度 ang(1≤ang≤180). 1162 輸出格式: 1163 在一行裏按要求輸出對應詢問的答案。 1164 輸入樣例: 1165 1166 1 1167 54 1168 輸出樣例: 1169 1170 10 1171 樣例解釋: 1172 樣例對應圖片上的狀況 1173 做者: 小黑 1174 單位: 臨沂大學 1175 時間限制: 1000 ms 1176 內存限制: 64 MB 1177 代碼長度限制: 16 KB 1178 題目詳情 1179 1180 7-37 英文單詞排序 (30分) 1181 本題要求編寫程序,輸入若干英文單詞,對這些單詞按長度從小到大排序後輸出。若是長度相同,按照輸入的順序不變。 1182 輸入格式: 1183 輸入爲若干英文單詞,每行一個,以 1184 # 1185 做爲輸入結束標誌。其中英文單詞總數不超過20個,英文單詞爲長度小於10的僅由小寫英文字母組成的字符串。 1186 輸出格式: 1187 輸出爲排序後的結果,每一個單詞後面都額外輸出一個空格。 1188 輸入樣例: 1189 1190 blue 1191 red 1192 yellow 1193 green 1194 purple 1195 # 1196 輸出樣例: 1197 1198 red blue green yellow purple 1199 1200 做者: 張泳 1201 單位: 浙江大學城市學院 1202 時間限制: 400 ms 1203 內存限制: 64 MB 1204 代碼長度限制: 16 KB 1205 題目詳情 1206 1207 7-38 互評成績 (30分) 1208 學生互評做業的簡單規則是這樣定的:每一個人的做業會被 1209 k 1210 個同窗評審,獲得 1211 k 1212 個成績。系統須要去掉一個最高分和一個最低分,將剩下的分數取平均,就獲得這個學生的最後成績。本題就要求你編寫這個互評系統的算分模塊。 1213 輸入格式: 1214 輸入第一行給出3個正整數 1215 N 1216 (3 < 1217 N 1218 ≤104,學生總數)、 1219 k 1220 (3 ≤ 1221 k 1222 ≤ 10,每份做業的評審數)、 1223 M 1224 (≤ 20,須要輸出的學生數)。隨後 1225 N 1226 行,每行給出一份做業獲得的 1227 k 1228 個評審成績(在區間[0, 100]內),其間以空格分隔。 1229 輸出格式: 1230 按非遞減順序輸出最後得分最高的 1231 M 1232 個成績,保留小數點後3位。分數間有1個空格,行首尾不得有多餘空格。 1233 輸入樣例: 1234 1235 6 5 3 1236 88 90 85 99 60 1237 67 60 80 76 70 1238 90 93 96 99 99 1239 78 65 77 70 72 1240 88 88 88 88 88 1241 55 55 55 55 55 1242 輸出樣例: 1243 1244 87.667 88.000 96.000 1245 1246 做者: 陳越 1247 單位: 浙江大學 1248 時間限制: 300 ms 1249 內存限制: 64 MB 1250 代碼長度限制: 16 KB 1251 題目詳情 1252 1253 7-39 租用遊艇問題 (20分) 1254 題目來源:王曉東,《算法設計與分析》 1255 長江遊艇俱樂部在長江上設置了n個遊艇出租站1,2,…,n。遊客可在這些遊艇出租站租用遊艇,並在下游的任何一個遊艇出租站歸還遊艇。遊艇出租站i到遊艇出租站j之間的租金爲r(i,j),1<=i<j<=n。試設計一個算法,計算出從遊艇出租站1 到遊艇出租站n所需的最少租金。 1256 輸入格式: 1257 第1 行中有1 個正整數n(n<=200),表示有n個遊艇出租站。接下來的第1到第n-1 行,第i行表示第i站到第i+1站,第i+2站, ... , 第n站的租金。 1258 輸出格式: 1259 輸出從遊艇出租站1 到遊艇出租站n所需的最少租金。 1260 輸入樣例: 1261 在這裏給出一組輸入。例如: 1262 1263 3 1264 5 15 1265 7 1266 輸出樣例: 1267 在這裏給出相應的輸出。例如: 1268 1269 12 1270 1271 做者: 陳曉梅 1272 單位: 廣東外語外貿大學 1273 時間限制: 400 ms 1274 內存限制: 64 MB 1275 代碼長度限制: 16 KB 1276 題目詳情 1277 1278 7-40 修理牧場 (20分) 1279 農夫要修理牧場的一段柵欄,他測量了柵欄,發現須要N塊木頭,每塊木頭長度爲整數Li個長度單位,因而他購買了一條很長的、能鋸成N塊的木頭,即該木頭的長度是Li的總和。 1280 可是農夫本身沒有鋸子,請人鋸木的酬金跟這段木頭的長度成正比。爲簡單起見,不妨就設酬金等於所鋸木頭的長度。例如,要將長度爲20的木頭鋸成長度爲八、7和5的三段,第一次鋸木頭花費20,將木頭鋸成12和8;第二次鋸木頭花費12,將長度爲12的木頭鋸成7和5,總花費爲32。若是第一次將木頭鋸成15和5,則第二次鋸木頭花費15,總花費爲35(大於32)。 1281 請編寫程序幫助農夫計算將木頭鋸成N塊的最少花費。 1282 輸入格式: 1283 輸入首先給出正整數N(≤104),表示要將木頭鋸成N塊。第二行給出N個正整數(≤50),表示每段木塊的長度。 1284 輸出格式: 1285 輸出一個整數,即將木頭鋸成N塊的最少花費。 1286 輸入樣例: 1287 1288 8 1289 4 5 1 2 1 3 1 1 1290 輸出樣例: 1291 1292 49 1293 1294 做者: DS課程組 1295 單位: 浙江大學 1296 時間限制: 400 ms 1297 內存限制: 64 MB 1298 代碼長度限制: 16 KB 1299 題目詳情