首页 > 其他分享 >P1102 A-B 数对

P1102 A-B 数对

时间:2023-03-12 11:45:45浏览次数:48  
标签:P1102 int 数对 namespace include 200005

题目链接:https://www.luogu.com.cn/problem/P1102

方法1:二分答案

#include<bits/stdc++.h>
using namespace std;
int n, c, a[200005];
long long ans;
int main()
{
	cin>>n>>c;
	for(int i=0; i<n; i++)
		cin>>a[i];
	
	sort(a, a+n);
	
	for(int i=0; i<n; i++){
		ans+=(upper_bound(a, a+n, a[i]+c)-a)-(lower_bound(a, a+n, a[i]+c)-a);
	}
	
	cout<<ans;
	
	return 0;
 } 

方法2:哈希表

#include<cstdio>
#include<iostream> 
#include<map>

using namespace std;

int a[200005];//桶存储每个出现过的数的次数 
map<int,int> tong;

int main()
{
	int n,c;
	scanf("%d%d",&n,&c);
	for(int i = 1;i <= n;++ i)
	{
		scanf("%d",&a[i]);
		tong[a[i]] ++;//计数 
	}
	long long js = 0;
	for(int i = 1;i <= n;++ i)
 	{//这里倒着想不去找两个数而是找一个然后再找另一个 
 		js += tong[a[i] + c];
	}
	printf("%lld\n",js);
	return 0;
 } 

标签:P1102,int,数对,namespace,include,200005
From: https://www.cnblogs.com/tflsnoi/p/17207865.html

相关文章

  • 内建函数对象-算数仿函数
    概念:  STL内建了一些函数对象分类:算数仿函数关系仿函数逻辑仿函数用法:这些仿函数所产生的对象,用法和一般函数完全相同使用内建函数对象,需要引入头文件#i......
  • 函数对象与闭包
    一、函数对象函数对象指的是函数可以被当做’数据’来处理,函数名不加括号就是指函数的内存地址函数名加括号,就是调用函数,找到函数体代码并执行,不论在哪个位置defindex......
  • 2341. 数组能形成多少数对 (Easy)
    问题描述2341.数组能形成多少数对(Easy)给你一个下标从0开始的整数数组nums。在一步操作中,你可以执行以下步骤:从nums选出两个相等的整数从nums中移除这......
  • KingbaseES checkpoint_timeout参数对wal日志量的影响
    前言在KingbaseESV8R6数据库中,必须先将更改写入WAL日志(老版本称为xlog),然后才能将这些更改从内存shared_buffer写入到磁盘。前两天有个同事遇到一个问题,wal日志每天生成......
  • 数组类目:1512.好数对的数目
    思路:暴力遍历,符合条件的ans+1,最后输出即可代码:publicclassL_1512{publicintnumIdenticalPairs(int[]nums){intans=0;for(inti=0;i<nu......
  • PAT Basic 1007. 素数对猜想
    PATBasic1007.素数对猜想1.题目描述:让我们定义\(d_n\)为:\(d_n=p_{n+1}−p_n\),其中\(p_i\)是第\(i\)个素数。显然有\(d_1=1\),且对于\(n>1\)有\(d_n\)是偶数。“素数对......
  • PAT-basic-1007 素数对猜想 java
    一、题目让我们定义dn为:dn=p(n+1)−p~n,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意......
  • 调用自定义的SplitString函数对字符串进行分割
    voidSplitString(conststd::string&s,std::vector<std::string>&v,conststd::string&c){ std::string::size_typepos1,pos2; pos2=s.find(c); pos1=0; while......
  • 数组能形成多少数对
    题目给你一个下标从0开始的整数数组nums。在一步操作中,你可以执行以下步骤:从nums选出两个相等的整数从nums中移除这两个整数,形成一个数对请你在nums上多......
  • 【LeetCode】数组能形成多少数对
    数组能形成多少数对题目给你一个下标从0开始的整数数组nums。在一步操作中,你可以执行以下步骤:从nums选出两个相等的整数从nums中移除这两个整数,形成一个......