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