题解 P1296 【奶牛的耳语】

· · 题解

这题并不难别看n<=10^6,实际开10^5也能过(数据过水)。

只要把每只奶牛的位置读入数组a

排序一波

再来枚举,每个位置加上d是否超过下一个位置

如果超过s++ 如果不超过就直接下一位枚举。

来自蒟蒻的代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
  int s=0,a[100001],i,j,d,n;//s总对数,a存放奶牛的位置;
  cin>>n>>d;//输入;
  for (i=1;i<=n;i++) cin>>a[i];
  sort(a+1,a+n+1);//快排;
  for (i=1;i<=n;i++)
    for (j=i+1;j<=n;j++)
      if (a[i]+d>=a[j]) s++;
      else break;//进行下个位置的枚举;
  cout<<s;
  wwwwwwwwwwwwwwwwwwww//防止抄袭!!!!!抄袭无耻!!!!!
}