站外题求助
  • 板块学术版
  • 楼主Wildchesse
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/1/12 19:43
  • 上次更新2023/10/24 04:32:42
查看原帖
站外题求助
362022
Wildchesse楼主2023/1/12 19:43

https://iai.sh.cn/problem/243

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a[100005],mway,ans;
signed main(){
	cin>>n>>mway;
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
	int b,c;
	sort(a,a+n); 
	for(b=0,c=1;c<n;){
		int per=0;
		while(a[c]-a[b]<=mway and c<n){
			c++;
			per++;
		}
		ans+=per+per-1;
		b++;
	}
	for(int i=1;i<c-b;i++){
		ans+=i;
	}
	cout<<ans;
	return 0;
}

样例过了,但交上去全错,双指针。 思路是c浮标从左到右直到达到上限,b浮标加一,c浮标在原基础上再累加,直到n,再用数学法算出来

2023/1/12 19:43
加载中...