題目描述
給定n個數,從中選出三個數,使得最大的那個減最小的那個的值小於等於d,問有多少種選法。
第一行兩個整數n,d(1 <= n <= 100,000,1 <= d <= 1000,000,000);第二行n個整數滿足abs(ai) <= 1,000,000,000。資料保證a單調遞增。
輸出乙個整數表示滿足條件的選法。
4 31 2 3 4
輸出
4
示例2
4 2-3 -2 -1 0
2
示例3
5 191 10 20 30 50
1
//二分+組合數
#include#includeusing namespace std;
const int maxn=1e5+5;
typedef long long ll;
int n,d;
int a[maxn];
int find(int x,int i)
}return val;
}int main()
ll sum=0,cnt=0;
for(int i=0;i
遞增和二分組合的查詢法
前面我們分別列出了遞增查詢法和二分查詢法,各有優缺點。遞增適用範圍廣,對陣列元素順序沒有要求,但效率較低 而二分法運算效率高,但對陣列元素的排列有要求需要從小到大排序好。因此我們可以將兩種演算法組合到乙個程式裡面,先去判斷給出的陣列元素是否已經排列好,若排列好就使用二分法查詢執行速度快,若沒有排序好...
AHOI2018初中組 二分查詢 分組
最開始是想二分答案的,但是沒有考慮到資料中重複的數值的情況,50 分 wa 了。但是這題顯然適合二分查詢 當我們的資料 在陣列中是線性排列的,就可以使用二分查詢。需要兩個輔助陣列 你甚至還會發現這題有點蜘蛛紙牌那味 霧 不多說閒話,下面是 二分查詢 設計乙個陣列 g 表示第 i 個分組中 需要加入的...
1056 組合數的和 (15 分)
這道題出的不嚴謹,萬一有重複的數字就會出錯,例如3 2 2 2 輸出結果為132其實只能組成22這一種二位數。1056 組合數的和 15 分 給定 n 個非 0 的個位數字,用其中任意 2 個數字都可以組合成 1 個 2 位的數字。要求所有可能組合出來的 2 位數字的和。例如給定 2 5 8,則可以...