洛谷 P2421 A B數對(增強版)

2022-03-04 21:59:54 字數 1018 閱讀 4358

給出n 個從小到大排好序的整數,乙個差值c,要求在這n個整數中找兩個數a 和b,使得a-b=c,問這樣的方案有多少種?

例如:n=5,c=2,5 個整數是:2 2 4 8 10。答案是3。具體方案:第3 個數減第1 個數;第3 個數減第2 個數;第5 個數減第4 個數。

輸入格式:

第一行2 個正整數:n,c。

第二行n 個整數:已經有序。注意:可能有相同的。

輸出格式:

乙個整數,表示該串數中包含的所有滿足a-b=c 的數對的方案數。

輸入樣例#1:

4 1

1 1 2 2

輸出樣例#1:

4

對於50% 的資料:n 的範圍是[1…1,000]。

對於另外50% 的資料:n 的範圍是[1…100,000]。

對於100% 的資料:c 的範圍是[1…1,000,000,000],n 個整數中每個數的範圍是:[0…1,000,000,000]。

普及的題目,很水的思路。因為統計y-x=c的次數,所以就只要統計x+c的值出現了多少次,那麼用m[a[i]]統計a[i]這個數出現的次數,這樣答案就是m[a[i]+c]的累加和,因為資料較大,所以m陣列需要hash,於是果斷用stl的map對映,解決。

**:

1

//luogu-judger-enable-o2

2 #include3

#define il inline

4#define debug printf("%d %s\n",__line__,__function__)

5using

namespace

std;

6 mapm;

7int n,c,a[500200

];8 il int

gi()916

intmain()

17

洛谷 P2421 A B數對(增強版)

woshiren在洛谷刷題,感覺第一題 求兩數的和 a b problem 太無聊了,於是增加了一題 a b problem,難倒了一群小朋友,哈哈。給出n 個從小到大排好序的整數,乙個差值c,要求在這n個整數中找兩個數a 和b,使得a b c,問這樣的方案有多少種?例如 n 5,c 2,5 個整數...

P2421 A B數對(增強版)

woshiren在洛谷刷題,感覺第一題 求兩數的和 a b problem 太無聊了,於是增加了一題 a b problem,難倒了一群小朋友,哈哈。給出n 個從小到大排好序的整數,乙個差值c,要求在這n個整數中找兩個數a 和b,使得a b c,問這樣的方案有多少種?例如 n 5,c 2,5 個整數...

P2421 A B數對(增強版)

woshiren在洛谷刷題,感覺第一題 求兩數的和 a b problem 太無聊了,於是增加了一題 a b problem,難倒了一群小朋友,哈哈。給出n 個從小到大排好序的整數,乙個差值c,要求在這n個整數中找兩個數a 和b,使得a b c,問這樣的方案有多少種?例如 n 5,c 2,5 個整數...