题目链接
https://www.luogu.com.cn/problem/P1296?contestId=34234
(来自洛谷)
解题思路
洛谷数据一直十分的水,本题也是。直接暴力也可以解出,但是蓝桥必然不会出现水题,因此要学会优质算法。
用STL库中的upper_bound函数。核心代码不过就是函数那句。
AC代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e6+5;
int n,d;
int a[N];
int main(){
cin>>n>>d;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1);
ll ans=0;
for(int i=1;i<n;i++){
int tmp=upper_bound(a+i+1,a+n+1,a[i]+d)-a-i-1;//在i牛之后,有多少牛可以与之交流
// cout<<tmp<<endl;//检验一下
ans+=tmp;
}
cout<<ans;
}
京公网安备 11010502036488号