录音录像手表网站,网站访客记录,网站有哪些备案,营销自动化工具P1102 A-B 数对 【双指针#xff08;尺取法#xff09;】 题目描述 给出一串正整数数列以及一个正整数 C#xff0c;要求计算出所有满足 A−BC 的数对的个数#xff08;不同位置的数字一样的数对算不同的数对#xff09;。 输入格式 输入共两行。 第一行#xff0c;两个… P1102 A-B 数对 【双指针尺取法】 题目描述 给出一串正整数数列以及一个正整数 C要求计算出所有满足 A−BC 的数对的个数不同位置的数字一样的数对算不同的数对。 输入格式 输入共两行。 第一行两个正整数 N,C。 第二行N 个正整数作为要求处理的那串数。 输出格式 一行表示该串正整数中包含的满足 A−BC 的数对的个数。 输入输出样例 输入 #1 4 1 1 1 2 3 输出 #1 3 说明/提示 对于 75% 的数据1≤N≤2000。 对于 100% 的数据1≤N≤2×10^5 0≤ai2^30 1≤C2^30 。
以下基于使用双指针尺取法的解题思路:
先把数列升序排列k 指针负责枚举每个数i指针指向 a[i]-a[k]c 的一段数的左端j指针指向 a[i]-a[k]c 的这段数的右端1ans 维护这段数的个数ans j-i
#include bits/stdc.h
using namespace std;
long long n,c,ans0;
long long a[200005];
int main()
{ cinnc;for(int i1;in;i) cina[i];sort(a1,an1);int i1,j1;for(int k1;kn;k){while(in a[i]-a[k]c )i;while(jn a[j]-a[k]c)j;ansj-i;}coutansendl;return 0;
}