牛客网_PAT乙级_1020完美数列(25)【vector sort 最后一个测试用例超时】
題目描述
給定一個(gè)正整數(shù)數(shù)列,和正整數(shù)p,設(shè)這個(gè)數(shù)列中的最大值是M,最小值是m,如果M <= m * p,則稱這個(gè)數(shù)列是完美數(shù)列。
現(xiàn)在給定參數(shù)p和一些正整數(shù),請(qǐng)你從中選擇盡可能多的數(shù)構(gòu)成一個(gè)完美數(shù)列。
輸入描述:
輸入第一行給出兩個(gè)正整數(shù)N和p,其中N(<= 105)是輸入的正整數(shù)的個(gè)數(shù),p(<= 109)是給定的參數(shù)。第二行給出N個(gè)正整數(shù),每個(gè)數(shù)不超過109。
輸出描述:
在一行中輸出最多可以選擇多少個(gè)數(shù)可以用它們組成一個(gè)完美數(shù)列。
輸入例子:
10 8
2 3 20 4 5 1 6 7 8 9
輸出例子:
8
我自己寫的測(cè)試用例:
測(cè)試用例1
輸入:
10 4
1 1 1 1 1 1 1 1 1 8
答案:
9
測(cè)試用例2
輸入:
23 50
1 1 1 1 1 1 1 1 1 8 9 10 12 15 20 22 25 30 40 49 50 51 52
答案:
21
測(cè)試用例3
輸入:
6 4
1 2 3 4 5 18
答案:
4
代碼
此題答案有爭(zhēng)議:
以下代碼跑上面提到過的所有的測(cè)試用例都沒問題,但OJ上超時(shí)。
我寫過一個(gè)只有最后一個(gè)測(cè)試用例不通過的代碼,但是那個(gè)思路完全不對(duì)。
所以現(xiàn)在的問題是:錯(cuò)誤思路能通過大多數(shù)測(cè)試用例,正確思路本地測(cè)試能通過,OJ上運(yùn)行時(shí)間超時(shí)。
如何修改?
計(jì)劃將25行的內(nèi)層循環(huán)j從0開始檢查,一直到結(jié)尾改為j從maxSize開始檢查,一直到結(jié)尾,節(jié)省一部分時(shí)間。
代碼1:修改前
以下代碼所有測(cè)試用例運(yùn)行超時(shí)
代碼2:修改后
以下代碼最后一個(gè)測(cè)試用例運(yùn)行超時(shí)
總結(jié)
以上是生活随笔為你收集整理的牛客网_PAT乙级_1020完美数列(25)【vector sort 最后一个测试用例超时】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++STL的vector中front(
- 下一篇: 牛客网_PAT乙级_1031. 查验身份