題目
我叫王大錘,是一名**。我剛剛接到任務:在位元組跳動大街進行埋伏,抓捕****孔連順。和我一起行動的還有另外兩名**,我提議
我們在位元組跳動大街的n個建築中選定3個埋伏地點。
為了相互照應,我們決定相距最遠的兩名**間的距離不超過d。
我特喵是個天才! 經過精密的計算,我們從x種可行的埋伏方案中選擇了一種。這個方案萬無一失,顫抖吧,孔連順!
……萬萬沒想到,計畫還是失敗了,孔連順化妝成小龍女,混在cosplay的隊伍中逃出了位元組跳動大街。只怪他的偽裝太成功了,就是楊過本人來了也發現不了的!
請聽題:給定n(可選作為埋伏點的建築物數)、d(相距最遠的兩名**間的距離的最大值)以及可選建築的座標,計算在這次行動中,大錘的小隊有多少種埋伏選擇。
注意:兩個**不能埋伏在同一地點
三個**是等價的:即同樣的位置組合(a, b, c) 只算一種埋伏方法,不能因「**之間互換位置」而重複使用
輸入描述
第一行包含空格分隔的兩個數字 n和d
(1 ≤ n ≤ 1000000
;1 ≤ d ≤ 1000000
)第二行包含n個建築物的的位置,每個位置用乙個整數(取值區間為[0,
1000000
])表示,從小到大排列(將位元組跳動大街看做一條數軸
輸出描述
乙個數字,表示不同埋伏方案的數量。結果可能溢位,請對 99997867 取模
示例
輸入43
1234
輸出4說明可選方案 (1,
2,3)
,(1,
2,4)
,(1,
3,4)
,(2,
3,4)
解釋
這題可以用滑動視窗實現
可以先設其中乙個人的位置是固定的,讓剩下的兩人找合適的。
因此思路是:
先固定一人在最右的下標i內,然後找出最遠但在適合距離內的點j,則其他的兩人在剩餘的點(j-i)裡都是合適的,因此有n*(n-1)/2種可能,
之後最左邊開始移動,重複上訴過程
**實現
#include
using
namespace std;
intmain()
cout<99997867
;return0;
}
萬萬沒想到之抓捕孔連順
1.題目描述 我叫王大錘,是一名 我剛剛接到任務 在位元組跳動大街進行埋伏,抓捕 孔連順。和我一起行動的還有另外兩名 我提議我們在位元組跳動大街的 n 個建築中選定 3 個埋伏地點。為了相互照應,我們決定相距最遠的兩名 間的距離不超過 d。我特喵是個天才 經過精密的計算,我們從 x 種可行的埋伏方案...
萬萬沒想到之抓捕孔連順
題目描述 我叫王大錘,是一名 我剛剛接到任務 在位元組跳動大街進行埋伏,抓捕 孔連順。和我一起行動的還有另外兩名 我提議 我們在位元組跳動大街的n個建築中選定3個埋伏地點。為了相互照應,我們決定相距最遠的兩名 間的距離不超過d。我特喵是個天才 經過精密的計算,我們從x種可行的埋伏方案中選擇了一種。這...
位元組跳動 萬萬沒想到之抓捕孔連順
我叫王大錘,是一名 我剛剛接到任務 在位元組跳動大街進行埋伏,抓捕 孔連順。和我一起行動的還有另外兩名 我提議 1.我們在位元組跳動大街的n個建築中選定3個埋伏地點。2.為了相互照應,我們決定相距最遠的兩名 間的距離不超過d。我特喵是個天才 經過精密的計算,我們從x種可行的埋伏方案中選擇了一種。這個...