1030 完美數列 25 要考慮全面

2021-07-02 12:31:34 字數 902 閱讀 4928

第一次非ac**

邏輯不夠嚴謹

#include#include#includeusing namespace std;

#define max 100000

long long arr[max];

int main()

sort(arr,arr+n);

long long min=arr[0];

for( i=n-1; i>=0; i-- )

}cout<

第二次非ac**

演算法不夠高效

#include#include#includeusing namespace std;

#define max 100000

long long arr[max];

int main()

sort(arr,arr+n);

long long min=arr[0];

for( i=n-1; i>=0; i-- )

}cout<

執行結果如下圖

ac**:

#include#include#includeusing namespace std;

#define max 100000

long long arr[max+1];

int main()

sort(arr,arr+n);

for( j=0; jans )

}else

break;

}cout<

後來的邏輯是 每次開始查詢的範圍隨著ans的值增大不斷縮減

換言之 就是我經過一次遍歷後 已經確定了較大的ans值 在下一次遍歷的時候我就從 j+ans 值位置開始 

類似於kmp的一步跨越盡可能多的元素個數

1030 完美數列 25

1030.完美數列 25 給定乙個正整數數列,和正整數p,設這個數列中的最大值是m,最小值是m,如果m m p,則稱這個數列是完美數列。現在給定引數p和一些正整數,請你從中選擇盡可能多的數構成乙個完美數列。輸入格式 輸入第一行給出兩個正整數n和p,其中n 105 是輸入的正整數的個數,p 109 是...

1030 完美數列 25

給定乙個正整數數列,和正整數p,設這個數列中的最大值是m,最小值是m,如果m m p,則稱這個數列是完美數列。現在給定引數p和一些正整數,請你從中選擇盡可能多的數構成乙個完美數列。輸入格式 輸入第一行給出兩個正整數n和p,其中n 105 是輸入的正整數的個數,p 109 是給定的引數。第二行給出n個...

1030 完美數列 25

給定乙個正整數數列,和正整數p,設這個數列中的最大值是m,最小值是m,如果m m p,則稱這個數列是完美數列。現在給定引數p和一些正整數,請你從中選擇盡可能多的數構成乙個完美數列。輸入格式 輸入第一行給出兩個正整數n和p,其中n 105 是輸入的正整數的個數,p 109 是給定的引數。第二行給出n個...