P1102 A-B数对

题目描述

出题是一件痛苦的事情!

题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的A+B Problem,改用A-B了哈哈!

好吧,题目是这样的:给出一串数以及一个数字C,要求计算出所有A-B=C的数对的个数。(不同位置的数字一样的数对算不同的数对)

输入输出格式

输入格式:

第一行包括2个非负整数N和C,中间用空格隔开。

第二行有N个整数,中间用空格隔开,作为要求处理的那串数。

输出格式:

输出一行,表示该串数中包含的所有满足A-B=C的数对的个数。

输入输出样例

输入样例#1: 复制

4 1
1 1 2 3

输出样例#1: 复制

3

说明

对于73%的数据,N <= 2000;

对于100%的数据,N <= 200000。

所有输入数据都在longint范围内。

2017/4/29新添数据两组

sort排序+模拟84分

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 200100
#define ll long long
using namespace std;
ll n,c,b,ans,a[N];
ll read()
{ll x=0,f=1; char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();return x*f;
}
int main()
{n=read(),c=read(),b=1;for(int i=1;i<=n;i++)a[i]=read();sort(a+1,a+1+n);for(int i=1;i<=n;i++)for(int j=b;j<i;j++)if(a[i]-a[j]<=c)if(a[i]-a[j]==c) ans++;else break;else b=j;printf("%lld",ans);return 0;
}

84分代码

map AC

#include<map>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 200100
#define ll long long
using namespace std;
map<int,int>m;
ll n,c,ans,a[N],maxn;
ll read()
{ll x=0,f=1; char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();return x*f;
}
int main()
{n=read(),c=read();for(int i=1;i<=n;i++){a[i]=read();m[a[i]]++;maxn=max(maxn,a[i]);} sort(a+1,a+1+n);for(int i=1;i<=n;i++)if(a[i]+c>maxn) break;else ans+=m[a[i]+c];printf("%lld",ans);return 0;
}

转载于:https://www.cnblogs.com/z360/p/7875212.html

洛谷——P1102 A-B数对相关推荐

  1. 二分查找——A-B数对(洛谷 P1102)

    题目选自洛谷P1102 分析题目,如果决定枚举A,那么问题就变成了统计数列中B+C出现了多少次. 把数列排列,那么B+C 会对应这个数列的连续一段.只要能快速找到这个连续段的左端点和右端点,也就是B+ ...

  2. 洛谷P2657 [SCOI2009]windy数

    洛谷P2657 [SCOI2009]windy数 本题是一道数位DP 看程序应该能看懂 中心思想:把一个数拆成每一位来处理 代码: #include<bits/stdc++.h> usin ...

  3. 洛谷 P1254 扇区填数

    洛谷 P1254 扇区填数 题目描述 有一个圆,当输入一个整数n(1≤n≤8)后,它被分成n个扇区,请你为每一扇区选择一个自然数(大于0的整数). 向各个扇区放入数之后,你可以从单个扇区中选出-个数, ...

  4. 洛谷刷题——P1255 数楼梯

    题目:来源于洛谷 楼梯有 N 阶,上楼可以一步上一阶,也可以一步上二阶. 编一个程序,计算共有多少种不同的走法. 输入格式 一个数字,楼梯数. 输出格式 输出走的方式总数. 输入输出样例 输入 #1 ...

  5. 网络流建模方法(四)—— 互不攻击问题 洛谷 P3353 骑士共存问题 (附 洛谷 P2774 方格取数问题)

    网络流建模方法(四)互不攻击问题,或者说是共存问题, 这类题目看起来有点像二分图匹配,这类题目我们就是建一个二分图然后跑最大流 还是先说题目洛谷P3353 题目描述 在一个 nn个方格的国际象棋棋盘上 ...

  6. #数位dp#洛谷 4317 花神的数论题

    感谢dalao@小粉兔的帮助 dalao's 博客园,dalao's 洛谷博客 题目 设f[i]f[i]f[i]表示iii转化为二进制后1的个数,求∏i=1nf[i]\prod_{i=1}^nf[i] ...

  7. (快速幂算法+高精度)洛谷P1045 麦森数

    前言   故事的最后,让我们以一道十分经典的题目--<麦森数>来结尾.接受现实吧,总会有我们没准备过的高精度运算出现.我们固然可以提前把高精度的快速幂模板也准备好,但是总会有百密一疏的时候 ...

  8. 洛谷 P2359 三素数数

    日常水一篇(滑稽) 题目描述 如果一个数的所有连续三位数字都是大于100的素数,则该数称为三素数数.比如113797是一个6位的三素数数. 输入输出格式 输入格式: 一个整数n(3 ≤ n ≤ 100 ...

  9. 洛谷 P1004 方格取数 【多线程DP/四维DP/】

    题目描述(https://www.luogu.org/problemnew/show/1004) 设有N*N的方格图(N<=9),我们将其中的某些方格中填入正整数,而其他的方格中则放 人数字0. ...

最新文章

  1. 淘宝开源的代码质量检测工具!
  2. linux开放2280端口,威联通推出适用于NAS/PC的双端口 M.2 2280 PCIe NVMe SSD含双端口2.5GbE扩展卡...
  3. 数据结构 | 链表:1097 删除重复元素
  4. iOS项目中的网络请求和上下拉刷新封装
  5. R语言中,保留含有特定字符的元素
  6. oracle有几种类型表空间,oracle 数据创建时如何指定表空间类型
  7. JavaScript将JSON转换为字符串
  8. 2.基于梯度的攻击——FGSM
  9. 大学计算机基础试题 百度网盘,【分享】《大学计算机基础》试题题库及答案 ~~~~~~~~~~~...
  10. 华为网络技术比赛-note(2018)
  11. 实验二 帧中继的基本配置
  12. USGS下载Landset数据指南
  13. vs2019编译cryengine失败问题处理
  14. 微信小程序 nodejs+vue校园学生社团管理系统
  15. Spring-aop面向切面
  16. 网吧服务器点歌系统,网吧点歌系统(网吧点歌曲软件)
  17. 1224:整除的尾数 c语言
  18. 为什么大家都喜欢买白色的汽车
  19. 阿里云共享基本型 xn4 实例详解及使用建议
  20. 每日一课 | 一文总结Python四大数据类型

热门文章

  1. 下列代码之后的结果为()?
  2. spring三: 装配bean( 在xml中进行显式配置, 在java中进行显式配置)
  3. python七:编码
  4. Snapchat何以在Facebook包围下“杀出重围”?
  5. $.ajax json 在本地正常 上传服务器不正常
  6. linux alias命令参数及用法详解--linux定义命令别名alias
  7. java生成Json文件
  8. locks java_java中Locks的使用
  9. HyperWorks2020中文版
  10. java日期时间的转化