P1102 A-B 数对
P1102题库链接:https://www.luogu.org/problem/P1102
难度:普及-
算法标签:模拟,数论,排序,HASH,概率论,二分查找
1.朴素 O(n^2) 得分76
将输入所有的数依次作为被减数,除此数外其他数依次作为减数,每当有一组的差为1时,方案数ans + 1
#include <cstdio>
using namespace std;
int main()
{
int n, c, s[], ans = ;
scanf("%d%d", &n, &c);
for(int i = ; i < n; ++i)
scanf("%d", &s[i]);
for(int i = ; i < n; ++i)
{
for(int j = ; j < n; ++j)
{
if(i == j) continue;
if(s[i] - s[j] == c) ++ans;
}
}
printf("%d\n", ans);
return ;
}
2.桶优化 O(n) 得分84
每输入一个数,所对应的桶增加,因为A - B = C -> A - C = B,枚举每一种A的可能值,从而用A - C求出B,若A,B存在(即桶不为0),则方案数ans += t[A] * t[B]
#include <cstdio>
using namespace std;
int main()
{
int n, c, ans = , t[] = {};
scanf("%d%d", &n, &c);
for(int i = ; i < n; ++i)
{
int x;
scanf("%d", &x);
++t[x];
}
for(int i = c; i <= ; ++i)
if(t[i] != && t[i - c] != )
ans += t[i] * t[i - c];
printf("%d\n", ans);
return ;
}
3.map优化 AC
#include <cstdio>
#include <map>
using namespace std;
long long a[];
map<long long, long long> m;
int main()
{
long long n, c, ans = ;
scanf("%lld%lld", &n, &c);
for(int i = ; i < n; ++i)
{
scanf("%lld", &a[i]);
++m[a[i]];
a[i] -= c;
}
for(int i = ; i < n; ++i)
ans += m[a[i]];
printf("%lld\n", ans);
return ;
}
P1102 A-B 数对的更多相关文章
- 洛谷 P1102 A−B数对
题目描述 出题是一件痛苦的事情! 题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的 A+BA+BA+B ProblemProblemProblem ,改用 A−BA-BA−B 了哈哈! 好吧,题目是这 ...
- 【洛谷】【二分查找】P1102 A−B数对
[题目描述:] 给出一串数以及一个数字 C ,要求计算出所有 A−B=C 的数对的个数.(不同位置的数字一样的数对算不同的数对) [输入格式:] 第一行包括 2 个非负整数 N 和 C ,中间用空格隔 ...
- P1102 A-B数对
P1102 A-B数对用map过掉,可以当高效的桶排用,map<long long,int>m;意思是m[long long]==int; #include<iostream> ...
- 洛谷P1102 A-B数对
洛谷P1102 A-B数对 https://www.luogu.org/problem/show?pid=1102 题目描述 出题是一件痛苦的事情! 题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的A ...
- 洛谷——P1102 A-B数对
P1102 A-B数对 题目描述 出题是一件痛苦的事情! 题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的A+B Problem,改用A-B了哈哈! 好吧,题目是这样的:给出一串数以及一个数字C,要求 ...
- 洛谷 P1102 A-B数对
P1102 A-B数对 题目描述 出题是一件痛苦的事情! 题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的A+B Problem,改用A-B了哈哈! 好吧,题目是这样的:给出一串数以及一个数字C,要求 ...
- 洛谷 P1102 A-B数对 题解
P1102 A-B 数对 题目描述 出题是一件痛苦的事情! 题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的 A+B Problem,改用 A-B 了哈哈! 好吧,题目是这样的:给出一串数以及一个数字 ...
- luogu P1102 A-B 数对 |二分查找
题目描述 出题是一件痛苦的事情! 题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的 A+B Problem,改用 A-B 了哈哈! 好吧,题目是这样的:给出一串数以及一个数字 C,要求计算出所有 A- ...
- Linux上如何查看物理CPU个数,核数,线程数
首先,看看什么是超线程概念 超线程技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高的CPU的 ...
随机推荐
- 如何将本地未提交的更改合并到另一个Git分支?
如何在Git中执行以下操作? 我当前的分支是branch1,我做了一些本地更改. 但是,我现在意识到我实际上是要将这些更改应用于branch2. 有没有办法应用/合并这些更改,以便它们成为branch ...
- vue打包成app后,背景图片不显示
问题: 在使用npm run build 打包后, 如果在页面中使用img标签引入,打包后的路径是由index.html开始访问的,真正访问的是Static/img/图片名, 是正确的, 但是写在cs ...
- 编译原理_P1004
龙书相关知识点总结 //*************************引论***********************************// 1. 编译器(compiler):从一中语言( ...
- 关于css中hover下拉框的一个bug
写hover下拉框的时候会遇到一个奇怪的bug,就是下拉框下来的时候会被所在位置的div遮挡,哪怕下拉框使用的absolute,也会被遮挡. 如图: 这个语言选择的下拉框会被下面的div挡住(截图是已 ...
- Codeforces Round #576 (Div. 2) D. Welfare State
http://codeforces.com/contest/1199/problem/D Examples input1 output1 input2 output2 Note In the firs ...
- String Distance and Transform Process
http://acm.hdu.edu.cn/showproblem.php?pid=1516 Problem Description String Distance is a non-negative ...
- 领域建模-模型验证与面向资源的API设计
使用 UMLet 建模 1. 使用类图,分别对 Asg_RH 文档中 Make Reservation 用例以及 Payment 用例开展领域建模.然后,根据上述模型,给出建议的数据表以及主要字段,特 ...
- Serverless 的开发者工具建设
本文将介绍 Serverless 生态下的开发者工具,并简述这些工具是如何贯穿开发.调试.测试和部署的生命周期,提升开发者效率的. 由于 Serverless 平台具备弹性扩缩.免运维.按需付费等特点 ...
- 关于Java中注解的总结
注解用来给类声明附加额外信息,可以标注在类.字段.方法等上面,编译器.JVM以及开发人员等都可以通过反射拿到注解信息,进而做一些相关处理 Java中注解的知识结构图 常用注解 @Override ...
- 构造函数中可以进行if判断